Как исправить unset JSON объект в php

Как исправить unset JSON объект в php

05.12.2019 10:54:41 Просмотров 15 Источник

У меня ниже 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"
}

Я хочу удалить все продукты, которые имеют статус = '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 из вывода продуктов.

Может кто-нибудь поможет мне исправить это?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php#comment104623445_59202417
да, мне нужно удалить status = false, но после запуска кода обновления измените исходный вывод json с индексом 0 и 2 в продуктах, которые мне нужно удалить из вывода

Ответы - Как исправить unset JSON объект в php / How to fix unset json object in php

Является ответом!
Nigel Ren

05.12.2019 11:04:42

Я не уверен, что json_output['order_info']['products']является правильным, поскольку order_infoпросто сбрасывает значение, используемое в цикле unset()

foreach

В вашем выводе у вас есть falseв качестве второго параметра для unset($products[$hitsIndex]); - это должна быть какая - то форма опции, а не просто true-что-то вроде json_encode.

Обновление:

После редактирования кода в вашем вопросе новая версия должна быть чем-то вроде...

true
https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php/59202532#comment104623204_59202532
я немного обновляю вопрос, так как предыдущий код не работал
https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php/59202532#comment104623329_59202532
по-прежнему выводится следующим образом {"products": {"0": {"type": "HR_ECLAIM", "name": "HR Claims","is_fixed_price":true,"price":500.5,"currency":"MYR","status":"true"},"2":{"type":"FIN_ADVISORY","name":"финансы 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", "замечание":"", "статус": "ожидание"}
https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php/59202532#comment104623404_59202532
право также обновить вопрос я упоминаю нужно удалить 0 и 2 значения из продуктов!
https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php/59202532#comment104623492_59202532
Да, но после кода запустите его изменить оригинальный формат JSON выход"продукции": [{ "тип": "HR_ECLAIM", "имя": "права требования", "is_fixed_price": правда, "цена": 500.5, "валюты": "мир", "статус": "истина" },' вот этот '{"продукты":{"0":{"Тип":"HR_ECLAIM","имя":"ч Claims","is_fixed_price":true,"price":500.5,"currency":"MYR","status":"true"},"2":{"type":"FIN_ADVISORY","name":"финансы","is_fixed_price":ложные,"валюты":"мир","статус":"истина"}},' мне нужен оригинальный выход после удалить ложные записи
https://stackoverflow.com/questions/59202417/how-to-fix-unset-json-object-in-php/59202532#comment104623664_59202532
Спасибо. Это сработало!