搜索数组并返回多个匹配项

时间:2013-07-29 15:35:14

标签: php

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

$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");

3 个答案:

答案 0 :(得分:10)

the docs中所述:

  

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

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

答案 1 :(得分:0)

你可以这样做:

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

答案 2 :(得分:0)

您可以使用array_intersect

  

array_intersect - 计算数组的交集

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

输出

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