【问题标题】:Search value in php array and get all keys在php数组中搜索值并获取所有键
【发布时间】:2015-03-24 12:48:37
【问题描述】:

有没有比使用 if 的 foreach 循环更好(= 更快)的解决方案来获取数组中的所有值键?

$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');

print_r($array);会给我:

Array ( [0] => apple [1] => orange [2] => pear [3] => banana [4] => apple [5] => pear [6] => kiwi [7] => kiwi [8] => kiwi )

array_search("猕猴桃", $array);会给我6

但我想要所有的猕猴桃钥匙。所以我想要6,7,8。在这种情况下。

暴力搜索循环:

 $searchObject = "kiwi";
 $keys = array();
 foreach($array as $k => $v) {
 if($v == $searchObject) $keys[] = $k; 
}

【问题讨论】:

    标签: php arrays search


    【解决方案1】:

    或者,您也可以在这种情况下使用array_keys,并提供第二个参数needle:

    $array = array('apple', 'orange', 'pear', 'banana', 'apple', 'pear', 'kiwi', 'kiwi', 'kiwi');
    $searchObject = 'kiwi';
    $keys = array_keys($array, $searchObject);
    print_r($keys);
    

    Sample Output

    【讨论】:

      【解决方案2】:
      function array_search_values( $m_needle, $a_haystack, $b_strict = false){
          return array_intersect_key( $a_haystack, array_flip( array_keys( $a_haystack, $m_needle, $b_strict)));
      }
      
      $array = array('apple', 'orange', 'pear', 'banana', 'apple',
      'pear', 'kiwi', 'kiwi', 'kiwi');
      
      print_r( array_search_values( 'kiwi', $array,true));
      

      【讨论】:

        【解决方案3】:

        试试这个:)

        <?php
            $array = array('apple', 'orange', 'pear', 'banana', 'apple','pear', 'kiwi', 'kiwi', 'kiwi');
            $count = count($array);
            $str_to_search = 'kiwi';
            for($i=0;$i<$count;$i++){
                if($array[$i] == $str_to_search){
                    echo $i.",";
                }
            }
        ?>
        

        【讨论】:

        • 是更快的解决方案吗?我不这么认为
        猜你喜欢
        • 2019-09-20
        • 2012-06-02
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 2012-12-08
        • 2014-03-23
        • 2012-10-18
        • 2017-10-27
        相关资源
        最近更新 更多