【发布时间】:2012-11-07 21:27:17
【问题描述】:
我正在尝试在我的 json 文件中搜索一个 id 并使用 php 删除该对象。
详细说明:我使用 jQuery post 将 ID 发布到我的 delete.php 并在我的 delete.php 文件中搜索 ID 并取消设置。但由于某种原因,如果我取消设置第一个对象,它会在我的 json 中添加一个数字并破坏它(我仍然可以添加更多对象,但会破坏第一个对象)。
// delete.php 文件如下所示:
if(isset($_POST['deleteData'])){
$data = $_POST['deleteData'];
$dataJSON = json_decode(file_get_contents('datas.json'), true);
for($i = 0, $dataJSONLength = count($dataJSON); $i < $dataJSONLength; $i++){
if($dataJSON[$i][data][0][id] == $data){
unset($dataJSON[$i]);
echo 'deleted';// needed for callback for feedback
}
}
file_put_contents('datas.json', json_encode($dataJSON));
}
// add.php 为:
if(isset($_POST['addData'])){
$dataJSON = json_decode(file_get_contents('datas.json'), true);
$dataJSON[] = $_POST['addData'];
file_put_contents('datas.json', json_encode($dataJSON));
}
我的 datas.json 文件非常嵌套,所以我将发布问题所在:
[{"user":[{"browser":[{" // this is what it looks like when I add
{"1":{"user":[{"browser":[{" // this is what happens when I delete the first object. Notice "1"
如果我不删除第一个对象,那么在删除第一个对象之前一切正常。有什么建议?谢谢。 (如果需要我可以发布整个 json 文件)
【问题讨论】:
-
您可以在搜索时尝试将所有项目移动到一个新数组中:
if($dataJSON[$i][data][0][id] != $data) $newData[]=$dataJSON[$i];