我需要将一个值与一个数组进行比较。然而,我需要在foreach中比较多个值。如果使用in_array,速度会很慢,非常慢。有没有更快的替代方法?我的当前代码是
foreach($a as $b){
in_array($b, $array);
}
谢谢你。
感谢您。
我需要将一个值与一个数组进行比较。然而,我需要在foreach中比较多个值。如果使用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
函数来查找那些在这些数组中的元素。
array_intersect
PHP手册示例:
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
print_r( array_intersect($array1, $array2) );
Array
(
[a] => green
[0] => red
)
如果你可以将数组视为哈希表:
$array = array('value' => 1);
然后在 foreach 循环中执行以下操作:
foreach($a as $b){
isset($array[$b]);
}
我刚刚复制粘贴了你的示例,我想还有更多的代码,但基本上使用isset要比使用in_array函数快得多。
我想你正在寻找 $a 和 $array 的交集,是吗?如果是的话,只需使用 array_intersect()
array_intersect()
。 - Dennis Haarbrink使用一个在数组值中禁止出现的分隔符将外部数组合并:
$x = "\x1a";
$array = $x . implode($x, $array) . $x;
foreach ($a as $b) {
if (strpos($array, $x . $b . $x) !== false) {
// in array
}
}