我需要将一个值与一组数组进行比较。但是,我需要比较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