Как редактировать файл json с помощью php

#php #arrays #json #object

#php #массивы #json #объект

Вопрос:

Я хочу записать данные в файл json, используя PHP приведенный ниже пример, но он всегда добавляет данные вне квадратных скобок (массивы).

Как я могу написать внутри квадратных скобок? Спасибо за вашу помощь!

Ответ №1:

Вы очень близки. Измените свой код, как показано ниже:

 $current_data = file_get_contents('users.json'); 
$array_data = json_decode($current_data, true);

$array_data["users"][] = array (          //   -> this line has been changed
         'name'        =>     $_POST["name"],  
         'mobile'      =>     $_POST["mobile"],  
         'datedon'     =>     $_POST["datedon"]  
          );

$final_data  = json_encode($array_data);  
...
  

Отредактировано:

Если вы хотите добавить элемент в начало вашего массива, используйте array-unshift:

 ...
$array_data = json_decode($current_data, true);
$item = array ( 
         'name'        =>     $_POST["name"],  
         'mobile'      =>     $_POST["mobile"],  
         'datedon'     =>     $_POST["datedon"]  
          );
array_unshift($array_data["users"] , $item);
$final_data  = json_encode($array_data);  
...
  

Комментарии:

1. Большое тебе спасибо, брат. 🙂

2. @GopalMeena — Добро пожаловать! Если этот пост помог вам — вы можете пометить его как принятый, чтобы другие могли его использовать (серая метка «v» слева от ответа)

3. Спасибо, брат! Но этот код добавляет данные в конец файла json, как добавить новые данные в начало (начало) файла json, как в вопросе, который я задал.

4. @GopalMeena Отредактировано с добавлением данных в начале

5. К сожалению, брат, но он не добавляет никаких новых данных в файл json.

Ответ №2:

Решение 1

Измените свой код с этого:

 $extra[] = array ( 
         'name'        =>     $_POST["name"],  
         'mobile'      =>     $_POST["mobile"],  
         'datedon'     =>     $_POST["datedon"]  
          );

$array_data[] = $extra;  
  

Так что это выглядит примерно так, как показано ниже:

 $array_data['users'][] = array (          
         'name'        =>     $_POST["name"],  
         'mobile'      =>     $_POST["mobile"],  
         'datedon'     =>     $_POST["datedon"]  
          );
  

Решение 2

Измените строку

 $array_data[] = $extra; 
  

к ниже:

 $array_data['users'][] = $extra; 
  

Комментарии:

1. Спасибо, брат! Но этот код добавляет данные в конец файла json, как добавить новые данные в начало (начало) файла json