php unset foreach 循环不是取消设置数组的值

php unset foreach loop is not unsetting the value of array

我在 php 7.2 中有以下代码:

foreach ($data->certificates as $k => $certificate) {
    if (empty($certificate['testCertificateId'])) {
        unset($data->certificates[$k]);
    }
}

$data 是一个关联数组。每个$certificate都是一个关联数组。

如果 $certificate 数组没有键 testCertificateId,我想从 $data->certificates 中删除 $certificate

我不知道为什么,但此代码不适用于 php 7.2。在 7.0 上它确实有效!

有人可以帮忙吗?这已经让我难受了 2 天...

这是您当前代码的解决方法:

$tempArr = [];
foreach ($data->certificates as $k => $certificate) {
    if (!empty($certificate['testCertificateId'])) {
        $tempArr[$k] = $data->certificates[$k];
    }
}
$data->certificates = $tempArr;