【发布时间】:2017-05-13 06:51:53
【问题描述】:
我正在尝试从 test_bots.json 中取消设置一个值并将其保存回来,但不知何故,数据格式在此过程中被更改。
test_bots.json 包含这个 JSON 数组:
["John","Vladimir","Toni","Joshua","Jessica"]
我的代码如下所示:
$good = 'Toni';
$good_arr = file_get_contents('test_bots.json');
$good_arr = json_decode($good_arr);
if(in_array($good, $good_arr)){
$key = array_search($good, $good_arr);
unset($good_arr[$key]);
$good_arr2 = json_encode($good_arr);
file_put_contents('test_bots.json',$good_arr2);
}
保存的输出是:
{"0":"John","1":"Vladimir","3":"Joshua","4":"Jessica"}
但我希望输出看起来像:
["John","Vladimir","Joshua","Jessica"]
我尝试在保存数组之前对其进行反序列化,但它不起作用。
为什么会这样?
【问题讨论】:
-
将
$good_arr中的file_put_contents更改为$good_arr2。 -
看起来只是一个错字。正如@jardis 指出的那样,您没有将刚刚使用
json_encode创建的变量保存到文件中,而是保存了未编码的数组。 -
抱歉打错了。我编辑了我的问题。 @不要惊慌
-
这里的罪魁祸首是
array_search()
标签: php json unset file-put-contents