这次在项目中使用 array_diff
函数被坑了. 有如下两个二维数组:
$ary1 = array(
array('uid'=>1,'name' => "zhangsan1"),
array('uid'=>2,'name' => "zhangsan2"),
array('uid'=>3,'name' => "zhangsan3"),
array('uid'=>4,'name' => "zhangsan4"),
);
$ary2 = array(
array('uid'=>3,'name' => "zhangsan2"),
array('uid'=>4,'name' => "zhangsan3"),
);
求这两个数组的差集, 用 array_diff()
函数:
$ary3 = array_diff($ary1, $ary2);
var_dump($ary3);
输出结果为array(0) {}
, 哈哈, 是不是很坑啊.
如果用在一维数组上, 也只比较了值, 并没有比较键, 也就是说只要值是一样的, 就会被剔除掉, 而不管键是否一样, 例如:
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","j"=>"yellow");
$result=array_diff($a1,$a2,$a3);
print_r($result);
输出结果为:Array ( [b] => green [c] => blue )
如果要键也参与比较则需要使用 array_diff_assoc()
函数