2013-07-29 60 views
2

例如,如果我在寻找我的阵列$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"); 
+0

的路口你就不能循环虽然阵列? – PeeHaa

+0

^是的,但没有PHP有任何内置函数来做到这一点? – user2217162

+2

也许这个http://stackoverflow.com/questions/1212605/php-array-search-for-multiple-values –

回答

9

正如the docs指出:

如果针大海捞针不止一次被发现,第一个匹配的键返回。要返回所有匹配值的键,请改用带可选search_value参数的array_keys()。

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

谢谢!!!!!!!!!!!!!! – user2217162

0

,你可以这样做:

for($index = 0; $index <= count($cake); $index++){ 
    if(!array_search(5, $cake[$index], true) == false){ 
     echo array_search(5, $cake[$index], true); 
    } 
} 
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 
)