如何获得PHP中两个对象数组的交集结果。
例如,
$ array1 的值为
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 2
[follower_id] => 1
)
)
, $ array2 的值为,
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 1
[follower_id] => 2
),
[1] => stdClass Object
(
[id] => 3
[influencer_id] => 3
[follower_id] => 2
),
)
所以,我想进入 $ result 的是
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 2
[follower_id] => 1
)
)
获得它的最佳方式是什么?
提前致谢!
答案 0 :(得分:1)
您可以使用array_uintersect
function并手动定义回调比较函数来执行此操作:
$arr1 = json_decode('[{"id":2,"influencer_id":2,"follower_id":1}]');
$arr2 = json_decode('[{"id":2,"influencer_id":2,"follower_id":1},{"id":3,"influencer_id":3,"follower_id":2}]');
$arr3 = array_uintersect($arr1, $arr2, function ($e1, $e2) {
if($e1->id == $e2->id && $e1->influencer_id == $e2->influencer_id && $e1->follower_id == $e2->follower_id) {
return 0;
} else {
return 1;
}
});
var_dump($arr3);
答案 1 :(得分:0)
尝试使用array_intersect
array_intersect()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,密钥会被保留。