5

例如,如果我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");
4

3 回答 3

12

文档中所述

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

print_r(array_keys($cake, 5, true));
于 2013-07-29T15:39:09.787 回答
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
)
于 2013-07-29T15:43:57.893 回答
0

你可以这样做:

for($index = 0; $index <= count($cake); $index++){
    if(!array_search(5, $cake[$index], true) == false){
        echo array_search(5, $cake[$index], true);
    }
}
于 2013-07-29T15:42:01.200 回答