我有两个像这样的对象数组
$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_diff
与array_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')
}
}