2013-09-12 2 views
2

Есть ли php-функция, аналогичная array_merge, которая делает прямо противоположную? Другими словами, у меня есть два массива. Я хотел бы удалить любое значение, которое существует во втором массиве из первого массива. Я мог бы сделать это, итерации с помощью циклов, но если есть удобная функция, позволяющая сделать то же самое, это будет предпочтительный вариант.В PHP, как я могу найти элементы в одном массиве, которые не находятся в другом?

Пример:

array1 = [1, 2, 3, 4, 5] 
array2 = [2, 4, 5] 

$result = array_unmerge(array1, array2); 

$ Результат должен выйти на [1, 3]

+2

http://php.net/manual/en/function.array-diff.php? – j08691

ответ

12

Вы можете использовать array_diff(), чтобы вычислить разницу между двумя массивами:

$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(2, 4, 5); 

$array3 = array_diff($array1, $array2); 
print_r($array3); 

Выход:

Array 
(
    [0] => 1 
    [2] => 3 
) 

Demo!

+2

+1 для описания, ссылки на документы, код, вывод и демонстрацию. Полный, хорошо организованный ответ. – showdev

+0

Красивые. Это именно то, что я искал, и мне почти стыдно, что я не смог найти его, выполнив поиск. Спасибо –

+0

@JoshuaZollinger: Не стоит беспокоиться :) –

1
$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(2, 4, 5); 
$result = array_diff($array1, $array2); 
1

array_diff

Возвращает массив, содержащий все записи array1, которые не присутствуют ни в одном из других массивов.

Смежные вопросы