Мне нужно сравнить значение с массивом. Однако мне нужно сравнить несколько значений в 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_intersect()