Как изменить json файл php
Вот как выглядит простой файл 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
Спасибо огромное за статью!
Спасибо большое! Отличный блог!
Оставить комментарий
Похожие материалы
Меня зовут Алексей Ртищев, я программист. Иногда пишу здесь о 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 на сервер и добавим в него новые возможности.
Логика будет такая:
- Мы научим сервер каждый раз запоминать данные, которые отправит ему наша страница. Чтобы убедиться, что данные в порядке, мы сразу же в ответ будем посылать результат — то, как сервер это запомнил.
- После этого мы поработаем с данными от сервера в понятном для JavaScript виде. Для этого мы немного их поменяем и отправим обратно на сохранение. Это поможет нам понять, как работать с данными в других проектах.
👉 Мы специально используем самые простые и не самые лучшие конструкции в PHP и JavaScript. Наша цель — собрать быстрый прототип и показать, как можно обмениваться данными с сервером. Когда разберёмся с этим, можно и код пооптимизировать. А пока так.
Сохраняем JSON в файл на сервере
Сейчас работает так — по нажатию на кнопку «Проверить JSON» наша страница отправляет на сервер JSON-строку с двумя ключами: именем и фамилией. Новая задача сервера — сохранять себе все полученные данные и отправлять их обратно на страницу. Чтобы данные не потерялись после окончания работы программы, будем сохранять их на сервере в файл json.data . Мы выбрали такое название, но вы можете взять любое другое, имя файла ни на что не влияет.
Так как по нажатию этой кнопки страница обращается на сервере к файлу json.php, то и изменять тоже нужно именно его. Сделаем так:
- Получаем данные от страницы (это уже сделано в прошлом проекте).
- Проверяем, есть ли на сервере нужный нам файл с данными — json.data.
- Если есть — запоминаем его содержимое, а если такого файла нет — создаём его отдельной командой.
- Всё, что было в этом файле, переводим в массив, с которым умеет работать PHP. Таким способом у нас каждая JSON-запись будет храниться в отдельной ячейке массива.
- Добавляем новую запись в этот массив — кладём в него то, что пришло со страницы.
- Записываем это всё обратно в файл и тут же читаем обратно из него — так мы убедимся, что запись прошла нормально и мы можем с этим работать.
- Отправляем всё содержимое файла на страницу, чтобы там увидеть, что сервер работает как нужно.
Задача этого алгоритма — сохранять данные на сервере и отдавать их обратно на страницу. На языке PHP то же самое будет выглядеть так:
Обратите внимание на последние строки в коде — мы освобождаем память на сервере, чтобы она не хранила те переменные, которые нам уже не нужны. Зачем это делать и что будет, если этого не делать, — почитайте в статье про сборщики мусора.
Подготавливаем страницу
Теперь научим нашу страницу правильно обрабатывать ответ от сервера и работать с полученными данными. Для этого нам нужно:
Перед тем как работать с полученными данными в JavaScript, нам нужно их куда-то сохранить. Для этого в самом начале скрипта заведём новую переменную res , и добавим в функцию sendJSON() такую строку:
// запоминаем данные, которые пришли с сервера
// выводим то, что ответил нам сервер —так мы убедимся, что данные он получил правильно
Теперь в этой переменной у нас будут лежать сырые данные, которые отправит нам сервер.
Чтобы мы могли отдельно управлять всеми изменениями, добавим в наш HTML-файл с прошлого проекта новую кнопку рядом с первой:
<!-- эта кнопка поменяет полученные данные
и отправит их снова на сервер --!>
Сделаем функцию editJSON(), которая сработает по нажатию на эту кнопку. Работать она будет так:
- Возьмёт сырые данные от сервера и преобразует их в формат, понятный для JavaScript.
- Найдёт все имена, посчитает количество символов в них и допишет это число к имени. Так мы поймём, что данные можно менять как нам нужно.
- Преобразует всё это обратно в JSON и отправит на сервер.
- На всякий случай снова выведет результат на странице, чтобы мы убедились, что на сервере лежат уже новые данные.
Чтобы не писать код заново, мы скопируем уже существующую функцию sendJSON(), переименуем её в editJSON() и добавим в неё то, что нам нужно. А перед этим в самом начале скрипта снова добавим две новые переменные:
- newData , где мы будем хранить данные в понятном формате;
- sendData , куда мы поместим новую JSON-строку перед отправкой на сервер.
Что мы делаем с JSON, полученным с сервера
Перед тем как показать финальный код, поясним один момент. Мы переводим данные с сервера в формат для JavaScript командой
В результате мы получаем двумерный массив, с которым можно работать так:
Дело тут вот в чём: первая цифра в квадратных скобках отвечает за порядковый номер JSON-записи, которые мы отправляли на сервер. Нумерация идёт с нуля, как принято у программистов.
Вторая цифра у нас всегда 0, потому что хотя это и двумерный массив, но каждая запись состоит всего из одного элемента. Так как нумерация с нуля, то мы и пишем 0.
После этого через точку идёт имя поля — у нас это name и lastname. Через них мы можем обращаться к конкретным значениям и менять в них что угодно.
Такая громоздкость получилась из-за того, что мы решили проблему в лоб — просто перевели данные с помощью встроенных средств языка. Это можно было сделать гораздо красивее, но так — быстрее.
Сам код новой функции:
Делаем новый PHP-обработчик на сервере
В скрипте мы обращались к файлу edit.php, которого у нас ещё нет. Всё, что нужно от этого файла, — чтобы он сохранил то, что ему пришло, и тут же отправил это обратно, чтобы мы убедились, что всё хорошо. Мы специально выносим такую простую функцию в отдельный файл, чтобы каждый из них отвечал за свою область работы.
Сам файл довольно прост:
Что дальше
Теперь у нас всё готово, чтобы переделать наши старые проекты и научить их хранить свои данные в облаке. Этим и займёмся.
Читайте также: