Как исправить unset JSON объект в php
У меня ниже 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 из вывода продуктов.
Может кто-нибудь поможет мне исправить это?
У вопроса есть решение - Посмотреть?

Источник

да, мне нужно удалить status = false, но после запуска кода обновления измените исходный вывод json с индексом 0 и 2 в продуктах, которые мне нужно удалить из вывода
Источник
Ответы - Как исправить unset JSON объект в php / How to fix unset json object in php
Является ответом!

05.12.2019 11:04:42
Я не уверен, что json_output['order_info']['products']
является правильным, поскольку order_info
просто сбрасывает значение, используемое в цикле unset()
foreach
В вашем выводе у вас есть false
в качестве второго параметра для unset($products[$hitsIndex]);
- это должна быть какая - то форма опции, а не просто true
-что-то вроде json_encode
.
Обновление:
После редактирования кода в вашем вопросе новая версия должна быть чем-то вроде...
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":"финансы 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", "замечание":"", "статус": "ожидание"}

право также обновить вопрос я упоминаю нужно удалить 0 и 2 значения из продуктов!

Да, но после кода запустите его изменить оригинальный формат 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":ложные,"валюты":"мир","статус":"истина"}},' мне нужен оригинальный выход после удалить ложные записи

Спасибо. Это сработало!
Помочь в развитии проекта: