您有两个包含对象的数组 -- 使用 array_udiff()
函数绝对是这个任务所需的。
我将使用现代语法("spaceship operator" 和 "arrow function syntax")演示这种技术。
考虑以下示例数据集:
$array1 = [
(object) ['id' => '204', 'day_id' => '12'],
(object) ['id' => '205', 'day_id' => '13'],
(object) ['id' => '206', 'day_id' => '14'],
(object) ['id' => '207', 'day_id' => '15'],
];
$array2 = [
(object) ['id' => '203', 'day_id' => '11'],
(object) ['id' => '205', 'day_id' => '13'],
(object) ['id' => '207', 'day_id' => '14'],
(object) ['id' => '209', 'day_id' => '17'],
];
< p >
array_udiff()
返回的数据将是第一个数组中未在第二个数组中匹配的行。
代码:(演示)
var_export(
array_udiff(
$array1,
$array2,
fn($a, $b) => $a->id <=> $b->id
)
);
返回这两行:
[
(object) ['id' => '204', 'day_id' => '12'],
(object) ['id' => '206', 'day_id' => '14'],
]
将前两个参数的顺序颠倒:(演示)
[
(object) ['id' => '203', 'day_id' => '11'],
(object) ['id' => '209', 'day_id' => '17'],
)
==
改为-
。 - salathe