Как сравнить два массива и удалить совпадающие элементы из одного для следующего цикла? - PullRequest
12 голосов
/ 22 октября 2008

Как еще можно сравнить два массива ($ A и $ B) и сократить соответствующие элементы из первого до подготовки к следующему циклу над массивом $ A?

$A = array(1,2,3,4,5,6,7,8);
$B = array(1,2,3,4);

$C = array_intersect($A,$B);  //equals (1,2,3,4)
$A = array_diff($A,$B);       //equals (5,6,7,8)

Это самый простой способ или есть способ использовать другую функцию, о которой я не думал? Моя цель - иметь массив, который я могу зациклить, вытаскивая группы связанного контента (я определил эти отношения в другом месте), пока массив не вернет false.

Ответы [ 5 ]

12 голосов
/ 22 октября 2008

Вы получили это. Просто используйте array_diff или array_intersect. Не намного легче, чем это.

Edit: Например:

$arr_1 = array_diff($arr_1, $arr_2);
$arr_2 = array_diff($arr_2, $arr_1);

Источник

2 голосов
/ 07 сентября 2016

Дорогой легкий и чистый способ

$clean1 = array_diff($array1, $array2); 
$clean2 = array_diff($array2, $array1); 
$final_output = array_merge($clean1, $clean2);
2 голосов
/ 22 октября 2008

См. Также array_unique . Если вы объедините два массива, он будет восстанавливать все дубликаты.

0 голосов
/ 13 августа 2015

Попробуйте это

$a = array(0=>'a',1=>'x',2=>'c',3=>'y',4=>'w');
$b = array(1=>'a',6=>'b',2=>'y',3=>'z');
$c = array_intersect($a, $b);

$result = array_diff($a, $c);
print_r($result);
0 голосов
/ 24 октября 2008

Эй, еще лучшее решение: array _ uintersect. Это позволяет вам сравнивать массивы согласно array_intersect, но затем позволяет сравнивать данные с функцией обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...