cse*_*t02 4 php arrays algorithm object
我如何获得 PHP 中两个对象数组之间的交集结果。
例如,
$array1的值为
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 2
[follower_id] => 1
)
)
Run Code Online (Sandbox Code Playgroud)
$array2的值为,
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 1
[follower_id] => 2
),
[1] => stdClass Object
(
[id] => 3
[influencer_id] => 3
[follower_id] => 2
),
)
Run Code Online (Sandbox Code Playgroud)
所以,我想在$result中得到的是
Array
(
[0] => stdClass Object
(
[id] => 2
[influencer_id] => 2
[follower_id] => 1
)
)
Run Code Online (Sandbox Code Playgroud)
获得它的最佳方式是什么?
提前致谢!
您可以使用array_uintersect函数并手动定义回调比较函数来做到这一点:
$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);
Run Code Online (Sandbox Code Playgroud)