用PHP修改JSON数据

用PHP修改JSON数据,php,json,Php,Json,我有一个HTML表单,我从中接收输入,我有一个PHP文件,它已经将其发布到JSON表单。但我需要ID部分作为特定对象的标识符。我尝试了所有已知的方法,结果只是把代码搞乱了。下面是一个详细的解释: JSON代码#1[我得到的] [ { "id": "1", "name": "aaa", "doctor": "Doctor #1", "appointment": "13:03",

我有一个HTML表单,我从中接收输入,我有一个PHP文件,它已经将其发布到JSON表单。但我需要ID部分作为特定对象的标识符。我尝试了所有已知的方法,结果只是把代码搞乱了。下面是一个详细的解释:

JSON代码#1[我得到的]

 [
        {
            "id": "1",
            "name": "aaa",
            "doctor": "Doctor #1",
            "appointment": "13:03",
            "date": "1998-12-15"
        },
        {
            "id": "2",
            "name": "bbb",
            "doctor": "Doctor #2",
            "appointment": "14:14",
            "date": "2016-05-31"
    }
] 
 [
         "1": {                            //The ID #1

            "name": "aaa",
            "doctor": "Doctor #1",
            "appointment": "13:03",
            "date": "1998-12-15"
        },
         "2": {                            //The ID #2
            "name": "bbb",
            "doctor": "Doctor #2",
            "appointment": "14:14",
            "date": "2016-05-31"
    }
] 
JSON代码#2[需要,我需要]

 [
        {
            "id": "1",
            "name": "aaa",
            "doctor": "Doctor #1",
            "appointment": "13:03",
            "date": "1998-12-15"
        },
        {
            "id": "2",
            "name": "bbb",
            "doctor": "Doctor #2",
            "appointment": "14:14",
            "date": "2016-05-31"
    }
] 
 [
         "1": {                            //The ID #1

            "name": "aaa",
            "doctor": "Doctor #1",
            "appointment": "13:03",
            "date": "1998-12-15"
        },
         "2": {                            //The ID #2
            "name": "bbb",
            "doctor": "Doctor #2",
            "appointment": "14:14",
            "date": "2016-05-31"
    }
] 
这是我用来将表单数据发布到JSON文件的PHP代码。

          $filetxt = 'JSON URL'; 

          $formdata = array(

          'id'=> $_POST['id'],
          'name'=> $_POST['name'],
          'doctor'=> $_POST['doctor'],      
          'appointment'=> $_POST['appointment'],
          'date'=> $_POST['date'],
        );

        // path and name of the file
        $filetxt = 'PATH_OF_THE_FILE';

        $arr_data = array();        // to store all form data

        if(file_exists($filetxt)) {      

          $jsondata = file_get_contents($filetxt);


          $arr_data = json_decode($jsondata, true);

        }        

        $arr_data[] = $formdata;        

        $jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
        if(file_put_contents('appointments.json', $jsondata))     
        include('URL');
        else include('URL2');
  }

请帮助我了解PHP代码部分。任何优化现有代码的方法都将受到欢迎。谢谢^。^

您必须为此创建嵌套数组:

看一看:

$newArr[$_POST['id']] = array(
            'name' => $_POST['name'],
            'doctor' => $_POST['doctor'],
            'appointment' => $_POST['appointment'],
            'date' => $_POST['date'],
            );

您需要更改代码,如下所示:

$formdata = array(
  $_POST['id'] => array(
    'name'=> $_POST['name'],
    'doctor'=> $_POST['doctor'],      
    'appointment'=> $_POST['appointment'],
    'date'=> $_POST['date'],
  )
);

解释什么不起作用。ID作为数组中的一个元素出现,我需要它作为数组的标识符。对不起,我不知道该用什么术语。你想要的东西不应该是。。。JSON中不能有关联数组。它将成为一个对象<代码>[“1”:{…},…]将是
{“1”:{…},…}