php - 从json对象中按值删除[关闭]
Posted
技术标签:
【中文标题】php - 从json对象中按值删除[关闭]【英文标题】:php - delete by value from json object [closed] 【发布时间】:2017-06-01 23:15:44 【问题描述】:我有一个包含以下数据的 JSON 文件:
"0":
"name": "Test1",
"devices": [
"name": "Test1",
"code": "654345",
"state": "on"
,
"name": "Test2",
"code": "876543",
"state": "off"
,
"name": "Test3",
"code": "44444",
"state": "off"
]
,
"1":
"name": "Test2",
"devices": [
"name": "Test4",
"code": "987654",
"state": "on"
]
现在我想取消设置其中一个设备。我用下面的 php 代码试过了,但不知道为什么它不起作用:
$file = '../data/data.json';
$json_data = file_get_contents($file);
$json = json_decode($json_data);
foreach ($json as $key => $value)
foreach ($value->devices as $k => $v)
if ($v->name == $_POST["name"])
unset($json[$key]);
file_put_contents($file, json_encode($json));
提前感谢您的帮助!
【问题讨论】:
您要取消设置哪个键?$_POST['name']
的值是多少?
$_POST['name'] 是设备的名称。
【参考方案1】:
你应该
unset($json->$key->devices[$k]);
首先 foreach 是因为你有多个对象,然后你去 currnet 对象中的每个设备并搜索它们是否具有指定的名称。 所以你搜索一个值并按键删除。
【讨论】:
以上是关于php - 从json对象中按值删除[关闭]的主要内容,如果未能解决你的问题,请参考以下文章