我有一个名为$ list的对象,格式如下
{"name":"cats","title":"Cats"},{"name":"dogs","title":"Dogs"},{"name":"rabbits","title":"Hares"}
我有一个名为$ list2的第二个对象,格式如下:
{"title":"Cats","name":"cats"},{"title":"Dogs","name":"dogs"},{"title":"Pigs","name":"pigs"},{"title":"Funny","name":"funny"},{"title":"Pictures","name":"pictures"},{"title":"Finance","name":"finance"},{"title":"Cars","name":"cars"},
我想浏览$ list并检查它是否在$ list2中。如果名称项目在$ list2的名称项目中,那么我想将其从$ list中删除。在这种情况下的预期结果将是
{"name":"rabbits","title":"Hares"}
我尝试了一些不同的循环技术,但我似乎无法正确匹配。
答案 0 :(得分:2)
您正在寻找的是内置的array_udiff()
功能。它通过您提供的函数找到数组中的差异。
$result = array_udiff($list1, $list2, function($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
因此,这将返回不在$list2
但在$list1
中的所有对象。我假设这个名字决定了唯一性。