我有这个 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; }
);
慕田峪7331174
TA贡献1828条经验 获得超13个赞
我知道一开始这很令人困惑,但是如果您使用 PHP ,它不会自动更新该值foreach()
,因为它会创建自己的局部变量。您需要&
在 前面指定自己$value
,如下所示:foreach ($apiErrors as &$value) {
。这将确保数组中的值实际发生变化。
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消