Работа PHP c JSON. Добавление, удаление и обновление в файле.

В этой статье я хочу рассказать о работе с массивом в  формате JSON. Я опущу описание функций json_decode и json_encode, хотя в примерах буду их использовать. Цель статьи продемонстрировать простоту работы с файлом в формате  *.json

Основной принцип работы php с json - декодирование или кодирование данных, где данные представлены как массив. В итоге всё сводиться к перебору массива и записью новых данных в файл.  

Приведу несколько примеров как можно добавить или обновить json файл. 

Добавление:

$file = file_get_contents('php/data.json');  // Открыть файл data.json
          
$taskList = json_decode($file,TRUE);        // Декодировать в массив 
                        
unset($file);                               // Очистить переменную $file
           
$taskList[] = array('name'=>$name);        // Представить новую переменную как элемент массива, в формате 'ключ'=>'имя переменной'
          
file_put_contents('php/data.json',json_encode($taskList));  // Перекодировать в формат и записать в файл.
          
unset($taskList);     

Где: data.json  - имя файла, $name - имя переменной которую необходимо добавить в файл.

Удаление:

  $file = file_get_contents('php/data.json');         // Открыть файл data.json

$taskList=json_decode($file,TRUE);                  // Декодировать в массив 

   foreach ( $taskList  as $key => $value){        // Найти в массиве  

      if (in_array( $current, $value)) {           // Переменную $current

                unset($taskList[$key]);             // после обнаружения удалить
          }
      } 

file_put_contents('php/data.json',json_encode($taskList)); // Перекодировать в формат и записать в файл.

unset($taskList);                           // Очистить переменную $taskList 

file_put_contents('php/data.json',json_encode($taskList)); // Перекодировать в формат и записать в файл.

unset($taskList);     

Где переменная $current  представлена в виде значения, без ключа.

Обновление:

$oldname = trim($oldname);               // Имя переменной которую нужно обновить

$newname = trim($name);                // Имя переменной которой обновим старое значение

$file = file_get_contents('php/data.json');     // Открыть файл data.json

$taskList=json_decode($file,TRUE);              // Декодировать в массив 

    foreach ( $taskList  as $key => $value){    // Найти в массиве  

       if (in_array( $oldname, $value)) {    // Совпадение значения переменной

          $taskList[$key]  = array('name'=>$newname);  // Присвоить новое значение
      }
   } 

file_put_contents('php/data.json',json_encode($taskList)); // Перекодировать в формат и записать в файл.

unset($taskList);  // Очистить переменную $taskList 

 

Я подробно прокомментировал каждую строку, и надеюсь ответил на вопросы с которыми  можно поначалу встретиться.

Удачи!.

Александр 04 июня, 2016

Большое спасибо администратору сайта, 2 дня потратил с попытками добавления все тщетно, пока не наткнулся на этот блог.! #мир_всем

instocky 20 ноября, 2017

красиво и с комментариями по каждой строке. Благодарочка)
занимаюсь тем же что и автор, нужна помощь - стучите в скайп или телегу @instocky

Костя 10 августа, 2018

Спасибо огромное!
Всё по полкам разложил!

Lacmus 23 августа, 2018

Ну да, ну да, а как быть когда данные получаются из базы по разным таблицам и сумма данных для записи в json 800mb+

alex7678678 28 августа, 2018

не корректно использована in_array()

Алексей 10 октября, 2018

Большое спасибо!

Dmitriy 31 октября, 2018

Здраствуйте.Скажите пожалуйста данные записываются null.Как исправить?

Оставить комментарий

Похожие материалы