【问题标题】:how to delete a json element?如何删除一个json元素?
【发布时间】:2019-06-26 09:37:30
【问题描述】:

如何在 PHP 中删除 JSON 元素? 这就是我添加元素的方式,但我不知道如何删除它

PHP Code

public function Savefavorite($supplier, $id_shop, $id_supplier, $favActive)
{
    $four = json_decode(Configuration::get('imp_favorite_'.$id_shop), true); // load
    if (!empty($favActive)) { // if 1 exist
        // ??????? DELETE element ???????
    }else { // if 0 no exist ok next
        $four['Suppliers'][$id_supplier]['supplier'] = $supplier;
    }
    Configuration::updateValue('imp_favorite_'.$id_shop, json_encode($four)); //save
}

Mysql code

{"Suppliers":{"1":{"supplier":"blablabliblou"},"2":{"supplier":"papapipipupi"}}}

【问题讨论】:

  • json_decode: "返回 在适当的 PHP 类型中编码为 json 的值。值 true、false 和 null 分别返回为 TRUE、FALSE 和 NULL。如果无法解码 json 或编码的数据比递归限制更深,则返回 NULL。" -> 在您的情况下为数组。你应该能够找到足够多的关于如何在 PHP 中使用数组的教程。
  • 谢谢,知道如何删除样本数据 delete "papapipipupi" 吗?
  • “如何”是什么意思?到目前为止,您尝试过什么,究竟在哪里卡住了?
  • 感谢您解决问题

标签: javascript php mysql json


【解决方案1】:

您可以使用unset 进行删除,更新您的IF..ELSE 如下

if (!empty($favActive)) { // if 1 exist
    // ??????? DELETE element ???????
    unset($four['Suppliers'][$id_supplier]['supplier']);
}else { // if 0 no exist ok next
    $four['Suppliers'][$id_supplier]['supplier'] = $supplier;
}

您可以使用删除整个索引

unset($four['Suppliers'][$id_supplier]);

【讨论】:

    【解决方案2】:

    json_decode
    将 JSON 更改为 PHP 类型(数组或 stdClass)。

    json_encode
    将 PHP 类型(数组或 stdClass)更改为 JSON。

    在您的代码中,您有变量:
    $four
    您可以使用 unset($element) 等方法删除元素。 例子:
    unset($four['Suppliers'][1]);
    

    它将删除 id = 1 的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2012-05-09
      • 2019-11-17
      • 2020-02-19
      • 1970-01-01
      相关资源
      最近更新 更多