亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在php中修復未設置的json對象

如何在php中修復未設置的json對象

PHP
忽然笑 2022-06-11 10:03:12
我有以下 json 對象,{"products": [{        "type": "HR_ECLAIM",        "name": "HR Claims",        "is_fixed_price": true,        "price": 500.5,        "currency": "MYR",        "status": "true"    },    {        "type": "HR_ELEAVE",        "name": "HR Leave",        "is_fixed_price": true,        "price": 500,        "currency": "MYR",        "status": "false"    },    {        "type": "FIN_ADVISORY",        "name": "Finance Advisory",        "is_fixed_price": false,        "currency": "MYR",        "status": "true"    }],"total_invoices": "100-600","total_staffs": "500-400","google_drive_url": "https:\/\/drive.google.com\/open?id=1Is6QsnuMLu9ZIpqeEzR2O2Ve1wUyF92aVCg55kWsOgc","remark": "","status": "pending"}我想刪除所有status = 'false'的產品我如何使用下面的代碼解決上述問題。但,$orders = (new Agos())->load($id);        $json = $orders->data;        $json = json_decode($json);foreach($json->products as $k=>$v) {        foreach ($json->products[$k] as $key=>$value) {            if ($key === "status" && $value === "false") {                unset($json->products[$k]);            }            json_encode($value, true);        }    }它像這樣返回輸出,{"products":{"0":{"type":"HR_ECLAIM","name":"HR Claims","is_fixed_price":true,"price":500.5,"currency":"MYR","status":"true"},"2":{"type":"FIN_ADVISORY","name":"Finance Advisory","is_fixed_price":false,"currency":"MYR","status":"true"}},"total_invoices":"100-600","total_staffs":"500-400","google_drive_url":"https:\/\/drive.google.com\/open?id=1Is6QsnuMLu9ZIpqeEzR2O2Ve1wUyF92aVCg55kWsOgc","remark":"","status":"pending"}有人可以幫助從產品輸出中刪除 0 和 2。有人可以幫我解決這個問題嗎?
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我不確定是否json_output['order_info']['products']正確,因為order_info您的問題中的 JSON 數據中沒有,但只是假設這部分是正確的。


主要問題是您unset()只是取消設置foreach循環中使用的值,而不是從原始數組中刪除任何內容。因此,如果您使用原始數組和循環中的索引,您應該能夠使用false


unset($products[$hitsIndex]);

在您的輸出中,您有true第二個參數json_encode- 這應該是某種形式的選項,而不僅僅是true- 類似JSON_PRETTY_PRINT.


更新:


在您的問題中編輯代碼后,新版本應該類似于...


foreach($json->products as $index => $product) {

    if ( $product->status == "false") {

        unset($json->products[$index]);

    }

}

$json->products = array_values($json->products);

echo json_encode($json, JSON_PRETTY_PRINT);


查看完整回答
反對 回復 2022-06-11
  • 1 回答
  • 0 關注
  • 83 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號