Как изменить json файл php

Обновлено: 07.07.2024

Вот как выглядит простой файл user.json:

Также рассмотрим такие функции как:
file_get_contents() — Читает содержимое файла в строку

Вот так мы считываем информацию из файла:

Вот что получиться:

Пользователь: Виталий Слюсар

Адрес: Украина, Днепропетровск, Дом:22

Контакты: +380 98 88 88 868, +380 98 88 88 868

А вот так мы заносим данные в файл json:

9 идей о “ Изучаем PHP 7. №23. Работа с .json файлами. ”

Скажите, пожалуйста, а записать информацию в json файл с помощью javascripta вообще реально, или для этих целей необходим именно серверный движок типа php?

Добрый день!
Для пробы скопировал весь, приведённый здесь код, создал файл user.json и вот что на экране, после запуска:
firstName; $lname = $data->lastName; $site = $data->site; $country = $data->address->country; $city = $data->address->city; $home = $data->address->homeNumber; $phone1 = $data->phoneNumbers[1]; $phone2 = $data->phoneNumbers[2]; ?>

Контакты: ,
Т.е. данные из файла user.json не отображаются. Почему?

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

Здравствуйте.А возможно ли дописывать обьекты в массив.Не могли бы пример привести.За ранее благодарю.

Да возможно, для этого нужно сначала превратить json в массив, затем в этот массив с помощью функции push_array() добавить запись и снова превратить в json. Это самый простой способ

Здравствуйте, а есть пример. Заполняем форму и она записывает в массив. А дальше мы ее выводим на примере фронт для меню.

Вообще-то, если глянуть в документации, то file_put_contents() записывает в существующий файл либо создаёт его, если его не существует.

Дописывание можно осуществить с помощью флага FILE_APPEND.

По сути, file_put_contents состоит из связки fopen+fwrite+fclose

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

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

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

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

Добавление:

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

Удаление:

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

Обновление:

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

Удачи в кодировании!!

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

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

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

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

На мой взгляд если требуется часто писать в файл, ну к примеру я использую для хранения кэша, то лучше всего писать в файл в конце выполнения скрипта, но приложение должно быть спроектировано так что бы никакие ошибки не могу повлиять на такую работу, это не касается современных фреймворком, но у меня исторический проект, который мы будем переносить на laravel, но до это момента еще года 2, так что не забывайте о нагрузке)

i am from Italy hello. Can you help me translate? /rardor

Спасибо огромное за статью!

Спасибо большое! Отличный блог!

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

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

Как удалить top-page в Windows 8

Установка drush 8 на Open Server используя composer

Как видео c YouTube поставить в фон сайта

Как добавить placeholder в форму авторизации Drupal

Меня зовут Алексей Ртищев, я программист. Иногда пишу здесь о web разработке и других смежных тематиках, таких как работа софта и операционных систем.
Если у вас появятся вопросы, вы захотите заказать сделать сайт под ключ, верстку, разработку/настройку модулей, мобильную версию сайта, вы можете связаться со мной через форму обратной связи.

Вот как выглядит простой файл user.json:

Также рассмотрим такие функции как:
file_get_contents() — Читает содержимое файла в строку

Вот так мы считываем информацию из файла:

Вот что получиться:

Пользователь: Виталий Слюсар

Адрес: Украина, Днепропетровск, Дом:22

Контакты: +380 98 88 88 868, +380 98 88 88 868

А вот так мы заносим данные в файл json:

9 идей о “ Изучаем PHP 7. №23. Работа с .json файлами. ”

Скажите, пожалуйста, а записать информацию в json файл с помощью javascripta вообще реально, или для этих целей необходим именно серверный движок типа php?

Добрый день!
Для пробы скопировал весь, приведённый здесь код, создал файл user.json и вот что на экране, после запуска:
firstName; $lname = $data->lastName; $site = $data->site; $country = $data->address->country; $city = $data->address->city; $home = $data->address->homeNumber; $phone1 = $data->phoneNumbers[1]; $phone2 = $data->phoneNumbers[2]; ?>

Контакты: ,
Т.е. данные из файла user.json не отображаются. Почему?

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

Здравствуйте.А возможно ли дописывать обьекты в массив.Не могли бы пример привести.За ранее благодарю.

Да возможно, для этого нужно сначала превратить json в массив, затем в этот массив с помощью функции push_array() добавить запись и снова превратить в json. Это самый простой способ

Здравствуйте, а есть пример. Заполняем форму и она записывает в массив. А дальше мы ее выводим на примере фронт для меню.

Вообще-то, если глянуть в документации, то file_put_contents() записывает в существующий файл либо создаёт его, если его не существует.

Дописывание можно осуществить с помощью флага FILE_APPEND.

По сути, file_put_contents состоит из связки fopen+fwrite+fclose

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Мы уже научились отправлять на сервер и принимать обратно данные в JSON-формате. Финальный шаг — будем хранить все наши данные на сервере, чтобы получить доступ к ним с любого устройства. Это поможет нам делать проекты независимыми от локального хранилища.

Как это будет работать

Мы возьмём код из прошлого проекта про отправку JSON на сервер и добавим в него новые возможности.

Логика будет такая:

  1. Мы научим сервер каждый раз запоминать данные, которые отправит ему наша страница. Чтобы убедиться, что данные в порядке, мы сразу же в ответ будем посылать результат — то, как сервер это запомнил.
  2. После этого мы поработаем с данными от сервера в понятном для JavaScript виде. Для этого мы немного их поменяем и отправим обратно на сохранение. Это поможет нам понять, как работать с данными в других проектах.

👉 Мы специально используем самые простые и не самые лучшие конструкции в PHP и JavaScript. Наша цель — собрать быстрый прототип и показать, как можно обмениваться данными с сервером. Когда разберёмся с этим, можно и код пооптимизировать. А пока так.

Сохраняем JSON в файл на сервере

Сейчас работает так — по нажатию на кнопку «Проверить JSON» наша страница отправляет на сервер JSON-строку с двумя ключами: именем и фамилией. Новая задача сервера — сохранять себе все полученные данные и отправлять их обратно на страницу. Чтобы данные не потерялись после окончания работы программы, будем сохранять их на сервере в файл json.data . Мы выбрали такое название, но вы можете взять любое другое, имя файла ни на что не влияет.

Так как по нажатию этой кнопки страница обращается на сервере к файлу json.php, то и изменять тоже нужно именно его. Сделаем так:

  1. Получаем данные от страницы (это уже сделано в прошлом проекте).
  2. Проверяем, есть ли на сервере нужный нам файл с данными — json.data.
  3. Если есть — запоминаем его содержимое, а если такого файла нет — создаём его отдельной командой.
  4. Всё, что было в этом файле, переводим в массив, с которым умеет работать PHP. Таким способом у нас каждая JSON-запись будет храниться в отдельной ячейке массива.
  5. Добавляем новую запись в этот массив — кладём в него то, что пришло со страницы.
  6. Записываем это всё обратно в файл и тут же читаем обратно из него — так мы убедимся, что запись прошла нормально и мы можем с этим работать.
  7. Отправляем всё содержимое файла на страницу, чтобы там увидеть, что сервер работает как нужно.

Задача этого алгоритма — сохранять данные на сервере и отдавать их обратно на страницу. На языке PHP то же самое будет выглядеть так:

Обратите внимание на последние строки в коде — мы освобождаем память на сервере, чтобы она не хранила те переменные, которые нам уже не нужны. Зачем это делать и что будет, если этого не делать, — почитайте в статье про сборщики мусора.

Подготавливаем страницу

Теперь научим нашу страницу правильно обрабатывать ответ от сервера и работать с полученными данными. Для этого нам нужно:

Перед тем как работать с полученными данными в JavaScript, нам нужно их куда-то сохранить. Для этого в самом начале скрипта заведём новую переменную res , и добавим в функцию sendJSON() такую строку:

// запоминаем данные, которые пришли с сервера

// выводим то, что ответил нам сервер —
так мы убедимся, что данные он получил правильно

Теперь в этой переменной у нас будут лежать сырые данные, которые отправит нам сервер.

Чтобы мы могли отдельно управлять всеми изменениями, добавим в наш HTML-файл с прошлого проекта новую кнопку рядом с первой:

<!-- эта кнопка поменяет полученные данные
и отправит их снова на сервер --!>

Сделаем функцию editJSON(), которая сработает по нажатию на эту кнопку. Работать она будет так:

  1. Возьмёт сырые данные от сервера и преобразует их в формат, понятный для JavaScript.
  2. Найдёт все имена, посчитает количество символов в них и допишет это число к имени. Так мы поймём, что данные можно менять как нам нужно.
  3. Преобразует всё это обратно в JSON и отправит на сервер.
  4. На всякий случай снова выведет результат на странице, чтобы мы убедились, что на сервере лежат уже новые данные.

Чтобы не писать код заново, мы скопируем уже существующую функцию sendJSON(), переименуем её в editJSON() и добавим в неё то, что нам нужно. А перед этим в самом начале скрипта снова добавим две новые переменные:

  • newData , где мы будем хранить данные в понятном формате;
  • sendData , куда мы поместим новую JSON-строку перед отправкой на сервер.

Что мы делаем с JSON, полученным с сервера

Перед тем как показать финальный код, поясним один момент. Мы переводим данные с сервера в формат для JavaScript командой

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

Дело тут вот в чём: первая цифра в квадратных скобках отвечает за порядковый номер JSON-записи, которые мы отправляли на сервер. Нумерация идёт с нуля, как принято у программистов.

Вторая цифра у нас всегда 0, потому что хотя это и двумерный массив, но каждая запись состоит всего из одного элемента. Так как нумерация с нуля, то мы и пишем 0.

После этого через точку идёт имя поля — у нас это name и lastname. Через них мы можем обращаться к конкретным значениям и менять в них что угодно.

Такая громоздкость получилась из-за того, что мы решили проблему в лоб — просто перевели данные с помощью встроенных средств языка. Это можно было сделать гораздо красивее, но так — быстрее.

Сам код новой функции:

Делаем новый PHP-обработчик на сервере

В скрипте мы обращались к файлу edit.php, которого у нас ещё нет. Всё, что нужно от этого файла, — чтобы он сохранил то, что ему пришло, и тут же отправил это обратно, чтобы мы убедились, что всё хорошо. Мы специально выносим такую простую функцию в отдельный файл, чтобы каждый из них отвечал за свою область работы.

Сам файл довольно прост:

Что дальше

Теперь у нас всё готово, чтобы переделать наши старые проекты и научить их хранить свои данные в облаке. Этим и займёмся.

Читайте также: