为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 通过属性名称从包含对象的数组中删除元素

PHP 通过属性名称从包含对象的数组中删除元素

PHP
月关宝盒 2023-09-15 21:32:43
我有这个 json 格式,这是我的最终响应,当我从 API 获取它时,它只有一个属性名称。我使用 json_decoe 得到这个apiErrors[    {        PropertyName: "Name1",        DisplayName: "Name1",        Step: "Step1    },        PropertyName: "Name2",        DisplayName: "Name2",        Step: "Step2    }]我想删除 Step 属性上带有“Step2”的项目。在 PHP 中,我使用 foreach 进行迭代并添加显示和步骤属性$apiErrors = json_decode(curl_exec($ch));foreach ($apiErrors as $value) {    if ($value->PropertyName == "Name1") {        $value->DisplayName = 'Name1';        $value->Step = 'Step1';    }    if ($value->PropertyName == "Name2") {        $value->DisplayName = 'Name2';        $value->Step = 'Step2';    }}我尝试这样做if (($key = array_search("Step2", $apiErrors)) !== false) {    unset($apiErrors[$key]);}但它并没有删除任何东西
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

简单的过滤就可以完成这项工作:


$apiErrors = array_filter(

    $apiErrors,

    function ($v) { return 'Step2' !== $v->Step; }

);


查看完整回答
反对 回复 2023-09-15
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我知道一开始这很令人困惑,但是如果您使用 PHP ,它不会自动更新该值foreach(),因为它会创建自己的局部变量。您需要&在 前面指定自己$value,如下所示:foreach ($apiErrors as &$value) {。这将确保数组中的值实际发生变化。



查看完整回答
反对 回复 2023-09-15
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信