在PHP中选择数组键

时间:2012-03-17 09:48:10

标签: php arrays string search key

我搜索了Google和PHP文档,但尚未找到解决方案。例如。假设我想对数组的所有键执行strstr()以确定哪些键最接近我正在搜索的键,这样:

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

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

真诚地感谢任何帮助。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这样做......

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

CodePad

$found将是所有键的数组,其中包含的子字符串包含在$search中。

如果您只想在另一个字符串中查找字符串,请使用strpos()

答案 3 :(得分:0)

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

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

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