例如,如果我在数组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");
答案 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
)