Как сравнить два массива и удалить соответствующие элементы из одного для следующего цикла?

Как еще вы могли бы сравнить два массива ($ A и $ B) и уменьшить совпадающие элементы из первого до prep для следующего цикла над массивом $ 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.

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

Изменить: Например:

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

Источник

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

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

 $clean1 = array_diff($array1, $array2); $clean2 = array_diff($array2, $array1); $final_output = array_merge($clean1, $clean2); 

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

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

 $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);