【问题标题】:Php Get the key of a array based in a string [duplicate]Php获取基于字符串的数组的键[重复]
【发布时间】:2012-06-29 07:04:43
【问题描述】:

可能重复:
How to search by key=>value in a multidimensional array in PHP
PHP search for Key in multidimensional array

如何在数组值中搜索并获取键?

示例: 搜索 id 1 = key 0 要么 搜索名称 Frank = key 1

Array
(
    [0] => Array
    (
        [id] => 1
        [name] => Bob
        [url] => http://www.bob.com.br
    )

[1] => Array
    (
        [id] => 2
        [name] => Frank
        [url] => http://www.frank.com.br
    )
)

谢谢。 阿德里亚诺

【问题讨论】:

  • are many examples可供选择
  • tks Michael.. (PHP search for Key in multidimensional array) 帖子解决了我的问题...

标签: php arrays


【解决方案1】:

使用array_search

foreach($array as $value) {
    $result = array_search('Frank', $value);
    if($result !== false) break;
}
echo $result

【讨论】:

    【解决方案2】:

    如果您不知道深度,您可以执行以下操作,其中使用了 RecursiveIteratorIterator 和 RecursiveArrayIterator:

    <?php
    /*******************************
    *   array_multi_search
    *
    *   @array  array to be searched
    *   @input  search string
    *
    *   @return array(s) that match
    ******************************/
    function array_multi_search($array, $input){
        $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));  
    
        foreach($iterator as $id => $sub){
            $subArray = $iterator->getSubIterator();  
    
            if(@strstr(strtolower($sub), strtolower($input))){
        $subArray = iterator_to_array($subArray);
                $outputArray[] = array_merge($subArray, array('Matched' => $id));
            }
        }  
    
        return $outputArray;
    }
    

    【讨论】:

      【解决方案3】:

      不要认为有一个预定义的功能, 但这里有一个:

      function sub_array_search($array, $sub_key, $value, $strict = FALSE)
      {
         foreach($array as $key => $sub_array)
         {
            if($sub_array[$sub_key] == $value)
            {
               if(!$strict OR $sub_array[$sub_key] === $value)
               {
                  return $key;
               }
            }
         }
      
         return FALSE;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 2018-12-29
        • 2017-07-28
        • 1970-01-01
        • 2017-01-01
        • 2016-12-31
        相关资源
        最近更新 更多