如何检查php中的另一个对象数组中是否不存在id值为的对象数组



我有两个像这样的对象数组

$array1 = [{id: '12',amount:'23'},{id:'10',amount:'129'},{id:'8', amount:'47'}];
$array2 = [{id: '3', date:'23'},{id:'4', date:'12'},{id:'6', date:'21'}];

我想检查第一个数组到第二个数组的所有id(12,10,8(。如果阵列2中不存在这些id。它将CCD_ 1。

我试着这样做,但当拳头元素不匹配时,它被停止进一步迭代并显示"未找到"状态。


foreach ($array1 as $value) {
foreach ($array2 as $value2) {
if ($value['id'] !== $value2['id']) {
var_dump('not found');
}
}
}

我希望在所有迭代完成后显示输出结果。

您可以将array_diffarray_column一起使用

if(!array_diff(array_column($array1, 'id'), array_column($array2, 'id'))){
echo 'Not matched';
}

谢谢你帮我,但是,我刚刚找到了一个解决方案,我使用循环迭代计数器。它计算迭代次数,并根据数组长度检查是否完成了所有迭代。

foreach ($array1 as $value) {
$notFound = 0;
foreach ($array2 as $value2) {
if ($value['id'] === $value2['id']) {
var_dump('match found')
}
} else {
$notFound++;
}
}
if ($notFound === count($array2)) {
var_dump('not found')
}
}

最新更新