Php 搜索并取消设置JSON对象

Php 搜索并取消设置JSON对象,php,json,object,unset,Php,Json,Object,Unset,我试图在json文件中搜索一个id,并用php删除该对象 详细说明:我使用jQuery post将id发布到我的delete.php,并在delete.php文件中搜索id并取消设置。但出于某种原因,如果我取消设置第一个对象,它会在json中添加一个数字并将其打断(我仍然可以添加更多对象,但会打断第一个对象) //delete.php文件如下所示: if(isset($_POST['deleteData'])){ $data = $_POST['deleteData']; $da

我试图在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));
  }
我的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文件)

PHP正在将数组转换为对象,可能是因为unset给了您一个关联数组,而不是索引数组。您应该调用array_splice而不是unset,或者在根据中的思想取消设置值后调用array_值


PHP将数组转换为对象可能是因为unset提供了一个关联数组,而不是索引数组。您应该调用array_splice而不是unset,或者在根据中的思想取消设置值后调用array_值


您可以尝试在搜索时将所有项目移动到新数组中:
if($dataJSON[$i][data][0][id]!=$data)$newData[]=$dataJSON[$i]
您可以在搜索时尝试将所有项目移动到新数组中:
如果($dataJSON[$i][data][0][id]!=$data)$newData[]=$dataJSON[$i]
[{"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" 
// your for loop:
for (...) {
    unset($dataJSON[$i]);
    ...
}
// After your for loop with all necessary values removed then call array_values to normalize the array.
$dataJSON = array_values($dataJSON);