Php 获取具有不同键的两个集合之间的差异

Php 获取具有不同键的两个集合之间的差异,php,laravel,Php,Laravel,我有两个收藏要比较: $collection1=collect([ “亚历克斯”, “约翰” ]); $collection2=collect([ [ 'id'=>1, 'name'=>'alex', ], [ 'id'=>2, “name”=>“john”, ], [ 'id'=>3, “name”=>“joe”, ], ]); 我想将collection2与$collection1进行比较,只获取名称值不在其他集合中的项目,结果如下: [ 'id' => 3, 'n

我有两个收藏要比较:

$collection1=collect([
“亚历克斯”,
“约翰”
]);
$collection2=collect([
[
'id'=>1,
'name'=>'alex',
],
[
'id'=>2,
“name”=>“john”,
],
[
'id'=>3,
“name”=>“joe”,
],
]);
我想将
collection2
$collection1
进行比较,只获取
名称
值不在其他集合中的项目,结果如下:

[
    'id' => 3,
    'name' => 'joe',
]
但问题是第一个集合有平面阵列,因此,我做了以下操作:

$collection2->扩散($collection1,函数($a,$b){
返回strcmp($a['name',$b);
});
但我得到了一个错误:

ErrorException:strcmp()要求参数2为字符串,数组给定


可以使用
whereNotIn
执行此操作,将第一个集合作为要过滤掉的值传递:

$result = $collect2->whereNotIn('name', $collect1);

您试过
在哪里了吗?使用
array\u diff
函数..执行
$arr=array\u column($array2,'name')
将从第二个数组中创建一个名称数组,然后您可以直接比较它们..
array\u diff($array1,$array2)
。@lagbox感谢它成功了,欢迎添加回复。