Ответ 1
У тебя это есть. Просто используйте array_diff
или array_intersect
. Не намного легче, чем это.
Edit: Например:
$arr_1 = array_diff($arr_1, $arr_2);
$arr_2 = array_diff($arr_2, $arr_1);
Как еще вы можете сравнить два массива ($ 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.
У тебя это есть. Просто используйте array_diff
или array_intersect
. Не намного легче, чем это.
Edit: Например:
$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);
Эй, еще лучшее решение: массив _ 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);