我需要將一個值與一組數組進行比較。但是,我需要比較foreach中的多個值。如果使用in_array,它可能很慢,很慢。有沒有更快的選擇?我目前的代碼是比in_array更快?
foreach($a as $b){
in_array($b, $array);
}
謝謝。
我需要將一個值與一組數組進行比較。但是,我需要比較foreach中的多個值。如果使用in_array,它可能很慢,很慢。有沒有更快的選擇?我目前的代碼是比in_array更快?
foreach($a as $b){
in_array($b, $array);
}
謝謝。
您可以使用array_diff
來計算$a
陣列與$array
之間的差異。這會給你所有的值不在$array
或$a
。從手動
例子:
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
print_r(array_diff($array1, $array2));
Array
(
[1] => blue
)
或者您可以使用array_intersect
找到那些在這些陣列。從PHP手冊
array_intersect
例子:
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
print_r(array_intersect($array1, $array2));
Array
(
[a] => green
[0] => red
)
選擇一個你需要的。
我想你正在尋找$ a和$ array的交集,對不對?如果是,只需使用array_intersect()
我想你的意思是'array_intersect()' – 2010-08-18 08:26:30
@ Dennis Haarbrink:是的, 我的錯。 – greg0ire 2010-08-18 09:14:01
如果你可以把數組作爲哈希:
$array = array('value' => 1);
然後在foreach做到這一點:
foreach($a as $b){
isset($array[$b]);
}
我只是複製&粘貼你的榜樣,我想有更多的代碼,但基本上使用isset比使用in_array函數快很多,
定義「真正慢」的數字請 – 2010-08-18 08:34:03
數組依然是th與PHP4中的PHP5相同,請正確標記。 http://php.net/ChangeLog-5.php http://de.php.net/manual/en/function.array-diff.php – TheLQ 2010-08-18 22:33:24