Есть ли встроенная функция для получения всех элементов массива 1, которых нет в массиве 2?
Я знаю, как это сделать программно, только интересно, есть ли встроенная функция, которая делает то же самое. Поэтому, пожалуйста, никаких примеров кода.
Это похоже на работу для array_diff
.
Возвращает массив, содержащий все записи из массива1, которые не присутствуют ни в одном из других массивов.
array_diff определенно является очевидным выбором, но он не является технически противоположным интересам массива. Возьмем следующий пример:
$arr1 = array('rabbit','cat','dog'); $arr2 = array('cat','dog','bird'); print_r( array_diff($arr1, $arr2) );
То, что вы хотите, – результат с «кроликом» и «птицей» в нем, но то, что вы получаете, это только кролик, потому что он ищет то, что находится в первом массиве, но не второе (а не наоборот). чтобы действительно получить результат, который вы хотите, вы должны сделать что-то вроде этого:
$arr1 = array('rabbit','cat','dog'); $arr2 = array('cat','dog','bird'); $diff1 = array_diff($arr1, $arr2); $diff2 = array_diff($arr2, $arr1); print_r( array_merge($diff1, $diff2) );
Примечание. Этот метод будет работать только с массивами с цифровыми клавишами.
$diff = array_diff($array1, $array2);
array_diff ()
Я нашел этот docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm весьма полезным.
Возможно, вам понадобится обратный diff, изменив порядок массивов в стандартном diff.