你如何比较两个数组($ 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。
答案 0 :(得分:12)
array_diff
或array_intersect
即可。没有那么容易。
修改 例如:
$arr_1 = array_diff($arr_1, $arr_2);
$arr_2 = array_diff($arr_2, $arr_1);
答案 1 :(得分:2)
另见array_unique。如果你连接这两个数组,它将会重复所有重复数组。
答案 2 :(得分:2)
亲爱的,干净利落的方式
$clean1 = array_diff($array1, $array2);
$clean2 = array_diff($array2, $array1);
$final_output = array_merge($clean1, $clean2);
答案 3 :(得分:0)
嘿,更好的解决方案:array _ uintersect. 这是让你按照array_intersect比较数组,但是它允许你将数据与回调函数进行比较。
答案 4 :(得分:0)
尝试这个
$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);