2013-07-29 59 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 
)