【问题标题】:Search array and return multiple matches [duplicate]搜索数组并返回多个匹配项[重复]
【发布时间】:2013-07-29 11:42:21
【问题描述】:

例如,如果我在数组$cake 中搜索值为5 的键,我可以使用以下代码:

$cake = array("a"=>6,"b"=>5,"c"=>6);
echo array_search(5, $cake, true); // returns "b";

但如果我的$cake 数组包含多个匹配项,则只返回第一个匹配项:

$cake = array("a"=>6,"b"=>5,"c"=>5,"d"=>5,"e"=>5);
echo array_search(5, $cake, true); // returns "b";

如何将多个匹配项作为数组返回?像这样:

$cake = array("a"=>6,"b"=>5,"c"=>5,"d"=>5,"e"=>5);
// return array("b","c","d","e");

【问题讨论】:

标签: php


【解决方案1】:

the docs中所述:

如果多次在 haystack 中找到 needle,则返回第一个匹配的键。要返回所有匹配值的键,请使用带有可选 search_value 参数的 array_keys()。

print_r(array_keys($cake, 5, true));

【讨论】:

    【解决方案2】:

    您可以使用array_intersect

    array_intersect — 计算数组的交集

     $matches = array_keys(array_intersect($cake, array(5)));
     print_r($matches);
    

    输出

    Array
    (
        [0] => b
        [1] => c
        [2] => d
        [3] => e
    )
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      for($index = 0; $index <= count($cake); $index++){
          if(!array_search(5, $cake[$index], true) == false){
              echo array_search(5, $cake[$index], true);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-27
        • 2022-01-13
        • 2018-05-09
        • 1970-01-01
        相关资源
        最近更新 更多