В этой статье я хочу рассказать о работе с массивом в формате 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
Я подробно прокомментировал каждую строку, думаю, это поможет вам разобраться как происходит добавление, удаление и обновление данных в формате JSON.
Удачи в кодировании!!
- Оставить комментарий
- 3859 просмотров
красиво и с комментариями по каждой строке. Благодарочка)
занимаюсь тем же что и автор, нужна помощь - стучите в скайп или телегу @instocky
Спасибо огромное!
Всё по полкам разложил!
Ну да, ну да, а как быть когда данные получаются из базы по разным таблицам и сумма данных для записи в json 800mb+
не корректно использована in_array()
Большое спасибо!
Здраствуйте.Скажите пожалуйста данные записываются null.Как исправить?
На мой взгляд если требуется часто писать в файл, ну к примеру я использую для хранения кэша, то лучше всего писать в файл в конце выполнения скрипта, но приложение должно быть спроектировано так что бы никакие ошибки не могу повлиять на такую работу, это не касается современных фреймворком, но у меня исторический проект, который мы будем переносить на laravel, но до это момента еще года 2, так что не забывайте о нагрузке)
Большое спасибо администратору сайта, 2 дня потратил с попытками добавления все тщетно, пока не наткнулся на этот блог.! #мир_всем