我正在尝试从php数组中删除一个项目。
我有一个用于存储数据的json文件。 json文件如下所示。
{
"1.49514754373E+12": {
"description": "I don't like it",
"fileNames": [
"a.jpg",
"b.jpg",
"c.jpg"
]
},
"1.4952754451E+12": {
"description": "hey there",
"fileNames": [
"a.jpg"
]
}
}
我的php代码看起来像这样
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
//the id is sent from the front end. In this case it is '0';
$data = $_REQUEST['id'];
$index = json_decode($data);
// get json from file
$json = file_get_contents('test.json');
// turn json into array
$masterArr = json_decode($json, true);
unset($masterArr[$index]);
// turn array back to json
$json = json_encode($masterArr, JSON_PRETTY_PRINT);
// save json to file
file_put_contents('test.json', $json);
echo $json;
?>
我尝试使用unset
- unset($masterArr[$index]);
,但这不起作用。谁能看到我做错了什么?
当我echo $index
时,我得到0
;
和var_dump(masterArr)
给了我
array(2) {
["1.49514754373E+12"]=>
array(2) {
["description"]=>
string(15) "I don't like it"
["fileNames"]=>
array(3) {
[0]=>
string(5) "a.jpg"
[1]=>
string(5) "b.jpg"
[2]=>
string(5) "c.jpg"
}
}
["1.4952754451E+12"]=>
array(2) {
["description"]=>
string(17) "hey there"
["fileNames"]=>
array(1) {
[0]=>
string(5) "a.jpg"
}
}
}
在上面的示例中,我尝试删除
"1.49514754373E+12": {
"description": "I don't like it",
"fileNames": [
"a.jpg",
"b.jpg",
"c.jpg"
]
}
答案 0 :(得分:0)
unset()会破坏指定的变量。如果你想删除文件而不是使用php的unlink功能
答案 1 :(得分:0)
要取消设置任何变量,请使用delete语句:
delete favorites.favorites[1].items[1]
如果你想从数组中实际删除一个项目,以便数组中的所有项目向下移动到较低的索引,你可以使用这样的东西:
favorites.favorites[1].items.splice(1, 1);
对于.splice()
,您传递要开始修改数组的索引,然后传递要移除此.splice(1, 1)
的项目数,这将删除从索引1开始的1项。
答案 2 :(得分:-1)
根据我的评论,如果$index
为0
,您希望删除所有内容。
所以只需按照以下方式执行
$data = $_REQUEST['id'];
$index = json_decode($data);
if($index == 0){
file_put_contents('test.json', "");
// you can also return your proper response here.
return;
}