2016-01-12 2 views
0

У меня есть HTML-форма, из которой я получаю Input, у меня есть файл PHP, который уже отправляет его в форму JSON. Но мне нужна идентификационная часть как идентификатор конкретного объекта. Я пробовал все известные способы, только закончил тем, что испортил код. Вот подробно объяснение:Изменить данные JSON с помощью PHP

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" 
    } 
] 

JSON код # 2 [Желаемая, что я хочу]

[ 
     "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" 
    } 
] 

Это код PHP, который я использую для отправки данных формы в файл JSON.

  $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. Любой подход к оптимизации существующего кода тоже будет оценен. . Благодаря^^

+0

Объясните, что не работает. –

+0

Идентификатор приходит как элемент в массиве, мне он нужен как идентификатор массива. Я не знаю, какие условия использовать, извините. –

+1

То, чего вы желаете, не должно быть ... вы не можете иметь ассоциативные массивы в JSON. Вместо этого это будет объект. '[" 1 ": {...}, ...]' будет '{" 1 ": {...}, ...}' –

ответ

1

Вам нужно будет изменить свой код так:

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

Спасибо Adrien, работает! :) –

1

вы должны создать вложенный массив для этого:

Посмотрите:

$newArr[$_POST['id']] = array(
      'name' => $_POST['name'], 
      'doctor' => $_POST['doctor'], 
      'appointment' => $_POST['appointment'], 
      'date' => $_POST['date'], 
      ); 
Смежные вопросы