【问题标题】:php unset foreach loop is not unsetting the value of arrayphp unset foreach 循环不会取消设置数组的值
【发布时间】:2019-05-11 23:48:17
【问题描述】:

我在 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 天...

【问题讨论】:

  • 您说'$data 是一个关联数组',但您将它用作对象。它是什么样的物体?
  • @EvE,该死的,你是 100% 正确的。它是 Zend 框架的对象Zend\Stdlib\Parameters,我会进一步挖掘它

标签: php arrays unset


【解决方案1】:

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

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

【讨论】:

  • 我会将您的答案标记为正确,因为它不是特定于应用程序的。原来我的是特定于应用程序的:$data 变量是 Zend 框架类的实例,而不是常规数组。
猜你喜欢
  • 2015-03-07
  • 2012-12-22
  • 2017-05-05
  • 2011-01-01
  • 2013-10-23
  • 1970-01-01
  • 2013-12-31
  • 2011-02-20
  • 2016-06-18
相关资源
最近更新 更多