【问题标题】:Selecting array key in PHP在 PHP 中选择数组键
【发布时间】:2012-03-17 09:48:09
【问题描述】:

我已经搜索了 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() 的元素所需的任何功能或方法。

真诚感谢任何帮助。

【问题讨论】:

    标签: php arrays string search key


    【解决方案1】:

    使用 foreach 遍历 Key,Value Pair。

    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

    【讨论】:

    • 谢谢!不过好奇的是,有没有办法通过 for 循环来实现这一点?
    【解决方案2】:
    foreach ($array as $key => $value)
    {
        if(strstr($key, $search))
        {
             print "Found: ". $key. "<br>";
        }
    }
    

    【讨论】:

      【解决方案3】:

      这样就可以了……

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

      CodePad.

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

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

      【讨论】:

        【解决方案4】:

        另一种选择是一步取出所需的键,例如使用preg_grep()

        $keys = preg_grep('/'.preg_quote($search, '/').'/', array_keys($array));
        
        foreach ($keys as $key) {
            echo "Found $key<br>";
        }
        

        【讨论】:

          猜你喜欢
          • 2014-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多