从 JSON-Array 中完全删除 JSON-Object [重复]

Posted

技术标签:

【中文标题】从 JSON-Array 中完全删除 JSON-Object [重复]【英文标题】:Completely Delete JSON-Object from JSON-Array [duplicate] 【发布时间】:2019-02-22 14:41:17 【问题描述】:

如果我通过 php 在 JSON 数组中取消设置一些 Obkect,那么我会得到一个带有两个空 [] 的未定义字段。但我想删除没有 [] 的整个对象。

这是我正在使用的代码:

// Unset Data Object from JSON-File
unset($data['server'][$Server][$ID]['id']);
unset($data['server'][$Server][$ID]['svc']);

“未设置”之前的 JSON 文件:


  "server": 
    "SERVER-01": [
        "svc":"SVC1", "id":1,
        "svc":"SVC2", "id":2,
        "svc":"SVC3", "id":3,
        "svc":"SVC4", "id":4,
        "svc":"SVC5", "id":5
    ],
    "SERVER-02": [
        "svc":"SVC1", "id":1,
        "svc":"SVC2", "id":2,
        "svc":"SVC3", "id":3,
        "svc":"SVC4", "id":4,
        "svc":"SVC5", "id":5
    ]
  

“未设置”后的 JSON 文件:


  "server": 
    "SERVER-01": [
        [],
        "svc":"SVC2", "id":2,
        "svc":"SVC3", "id":3,
        "svc":"SVC4", "id":4,
        "svc":"SVC5", "id":5
    ],
    "SERVER-02": [
        "svc":"SVC1", "id":1,
        "svc":"SVC2", "id":2,
        [],
        "svc":"SVC4", "id":4,
        "svc":"SVC5", "id":5
    ]
  

编辑: 我得到以下输出 unset($data['server'][$Server][$ID]:


  "server": 
    "SERVER-01": 
        "1": "svc":"SVC2", "id":2,
        "2": "svc":"SVC3", "id":3,
        "3": "svc":"SVC4", "id":4,
        "4": "svc":"SVC5", "id":5
    ,
    "SERVER-02": [
        "svc":"SVC1", "id":1,
        "svc":"SVC2", "id":2,
        "svc":"SVC3", "id":3,
        "svc":"SVC4", "id":4,
        "svc":"SVC5", "id":5
    ]
  

【问题讨论】:

unset($data['server'][$Server][$ID])…!? $Server$ID 是什么? 【参考方案1】:

不要这样做:

// Unset Data Object from JSON-File
unset($data['server'][$Server][$ID]['id']);
unset($data['server'][$Server][$ID]['svc']);

就停在 ID 上,像这样:

// Unset Data Object from JSON-File
unset($data['server'][$Server][$ID];

现在当你json_encode你的数组时,你会看到它完全消失了:-)

【讨论】:

如果我这样做,那么我会得到一个完全不同的 JSON 文件 -> 请参阅已编辑的问题 我必须将新数据添加到一个新数组中,然后重新编码这个数组:$var=array(); foreach($data['server'][$Server] as $key => $item) $var['server'][$Server][] = $item; echo json_encode($var, JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK), "\n\n\n"; 很高兴你到了那里!祝你有美好的一天:-)

以上是关于从 JSON-Array 中完全删除 JSON-Object [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JS:传递的 JSON-Array 丢失引号

从数组中删除对象并不是完全删除项目

如何从 MongoDB 文档中完全删除字段?

如何从 gitlab 中完全删除提交?

如何从 mac 中完全删除 NPM 包?

如何完全从 Windows 中删除 anaconda?