2012-03-17 64 views
0

我搜索了Google和PHP文档,但尚未找到解决方案。例如。假如我想在一个数组的所有键执行的strstr(),以确定哪些键是最接近于我在寻找,使得:在PHP中选择数组密钥

for($i=0;$i<count($array);$i++) { 
    if(@strstr(key($array[$i]), "$search")) { 
    print "Found: ". key($array[$i]). "<br>"; 
    } 
} 

“键($阵列[$ i] )“是一个占位符,用于选择数组键作为执行strstr()的元素所需的任何函数或手段。

任何帮助表示衷心感谢。

回答

1
foreach ($array as $key => $value) 
{ 
    if(strstr($key, $search)) 
    { 
     print "Found: ". $key. "<br>"; 
    } 
} 
2

使用的foreach通过键,值对迭代。

foreach($array as $key=>$value) { 
    if(@strstr($key, "$search")) { 
    print "Found: ". $key. "<br>"; 
    } 
} 

更多参考: http://php.net/manual/en/control-structures.foreach.php

更新回答评论:

可以使用

array_keys - 返回所有键或数组

的键的子集

http://php.net/manual/en/function.array-keys.php

+0

谢谢!好奇心虽然,有没有办法通过一个for循环来实现这一点呢? – user784446 2012-03-17 09:59:51

+0

@ user784446查看更新的答案 – Pheonix 2012-03-17 10:01:42

1

这将做到这一点...

$found = array_filter(
        array_keys($array), 
        function($key) use ($search) { 
         return strpos($key, $search) !== FALSE; 
        }); 

CodePad

$found将是包含子字符串包含在$search中的所有密钥的数组。

如果您只是在寻找另一个字符串的存在,请使用strpos()

+1

@Basti在你之前:) – alex 2012-03-17 09:59:11

0

另一种选择是在一个步骤中拉出所需的键,例如,使用preg_grep()

$keys = preg_grep('/'.preg_quote($search, '/').'/', array_keys($array)); 

foreach ($keys as $key) { 
    echo "Found $key<br>"; 
}