如何比较两个数组并从下一个循环中删除匹配元素?

时间:2008-10-22 11:33:38

标签: php arrays

你如何比较两个数组($ 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 个答案:

答案 0 :(得分:12)

你已经知道了。只需使用array_diffarray_intersect即可。没有那么容易。

修改 例如:

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

Source

答案 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);