有如下二维数组:
$a = [['name'=>'aa'],['name'=>'bb'],['name'=>'cc']];
$b = [['name']=>'mm',['name'=>'aa'],['name'=>'nn'],['name'=>'cc']];
# 期望得到 $a => diff => $b => [['name'=>'bb']]
如果是一维数组可以直接使用
$a = ['aa','bb','cc'];
$b = ['mm', 'aa','nn','cc'];
array_diff($a, $b) // ['bb']
二维数组可以使用如下方法实现:
$m = [['name'=>'aa'],['name'=>'bb'],['name'=>'cc']];
$n = [['name']=>'mm',['name'=>'aa'],['name'=>'nn'],['name'=>'cc']];
$diff = array_udiff($m, $n, function ($a, $b) {
return strcmp(serialize($a), serialize($b));
});
//var_dump($diff) [['name'=>'bb']]