JSON в массив PHP
Вставьте документ JSON и получите литерал массива PHP, отформатированный для исходного файла .php: краткий синтаксис массивов ([...]), правильные отступы, корректно заключённые в кавычки строки, вложенные объекты становятся ассоциативными массивами, а массивы остаются индексированными. Удобно для встраивания фикстур API в тесты или для заполнения конфигурационных файлов.
Как преобразовать JSON в PHP
-
1
Вставьте JSON
Любой корректный JSON: объекты, массивы, глубоко вложенные структуры.
-
2
Выберите синтаксис
Краткий `[...]` (PHP 5.4+) или длинный `array(...)` (сейчас нужен редко).
-
3
Выберите кавычки для строк
Одинарные кавычки (без интерполяции, апострофы экранируются) или двойные кавычки (допускают интерполяцию `$`: обычно не то, что нужно для данных).
-
4
Скопируйте массив
Вставьте в файл `.php`, присвойте `return` или оберните в `config([...])`.
Пример
Ввод:
{ "app": { "name": "MyApp", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }
Результат (краткий синтаксис, одинарные кавычки):
[
'app' => [
'name' => 'MyApp',
'debug' => true,
'hosts' => [
'h1.example.com',
'h2.example.com',
],
],
]
Сопоставление типов
| JSON | PHP |
|---|---|
| строка | строка (в одинарных кавычках) |
| целое число | int |
| число (дробное) | float |
| логическое значение | true / false |
| null | null |
| массив (JSON) | индексированный массив |
| объект (JSON) | ассоциативный массив |
Когда использовать ассоциативный, а когда индексированный массив
В PHP есть единственный тип массива с обоими поведениями. JSON же чётко различает объект и массив, поэтому сопоставление такое:
{}→ ассоциативный массив (['key' => value]).[]→ индексированный массив ([value, value]).
Генератор всегда сохраняет это различие; смешивать их в PHP допустимо, но это запутывает.
Особенности PHP, о которых стоит помнить
- Числовые строковые ключи. PHP приводит
"42"к целочисленному ключу42в массиве. Если в вашем JSON числовые строки используются как ключи и вам нужно сохранить их строками, обход черезarray_combineих не сохранит. - Большие целые числа. JSON может содержать целые числа больше
PHP_INT_MAXна 32-битных сборках. Генератор предупреждает, когда это возможно. - UTF-8. Строки PHP, это последовательности байтов; генератор выводит UTF-8 буквально. Убедитесь, что файл
.phpсохранён в UTF-8 без BOM.
Сценарии использования
- Файлы конфигурации. И Laravel, и Symfony используют конфигурацию в виде массивов PHP. Перенос конфигурации из JSON в стиле вендора работает хорошо.
- Тестовые фикстуры. Фикстуры
PHPUnitв виде массивов чище, чем файлы JSON, загружаемые во время выполнения. - Сидеры. Сидеры базы данных в Laravel часто начинаются как дамп JSON и превращаются в массивы PHP.
Распространённые ошибки
- Обратное преобразование массивов PHP в JSON.
json_encodeтрактует ассоциативный массив как объект, а индексированный, как массив. Если их смешать (['key' => 'val', 0 => 'x']), на выходе получится объект. Держите массивы JSON-образной формы в форме JSON. - Двойные кавычки с апострофами. Строки PHP в одинарных кавычках требуют экранирования
\'; строки в двойных кавычках требуют экранирования\\", и переменные могут случайно интерполироваться, если не быть внимательным. Для данных используйте одинарные кавычки. - Забытые завершающие запятые. PHP допускает их с версии 7.3, и они делают диффы чище. Генератор добавляет их по умолчанию.
Часто задаваемые вопросы
Краткий синтаксис ([...]) доступен с PHP 5.4 и является идиоматичным выбором для всего современного кода. Длинный синтаксис (array(...)) нужен только для кода, который должен работать на PHP 5.3 или более ранних версиях, по сути, для устаревших систем.
Да. Файлы конфигурации Laravel, это обычные массивы PHP, возвращаемые из файла. Вставьте вывод генератора после return и сохраните его в каталоге config/.
Строки PHP в одинарных кавычках не интерполируют переменные и escape-последовательности (кроме \' и \\). Для литералов данных это быстрее и безопаснее. Двойные кавычки нужны только тогда, когда внутри строки требуется \n, \t или $variable.
Нет, он выводит литерал массива. При необходимости оберните его сами в return, const или свойство класса. Компактный вывод остаётся легко компонуемым.
Сопутствующие инструменты
Смешивание цветов
Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.
Генератор вымышленных телефонных номеров
Создавайте до 50 вымышленных номеров из официально зарезервированных диапазонов пяти стран.
Генератор конфигурации webpack
Создайте webpack.config.js для webpack 5 по короткой форме: задайте entry, папку вывода и режим, затем включите TypeScript, Babel, загрузчик CSS, HtmlWebpackPlugin и сервер разработки.
Генератор бейджей README
Создавайте бейджи shields.io для файлов README на GitHub: статус сборки, версия, лицензия, число загрузок и покрытие кода. Просмотрите и скопируйте фрагмент Markdown.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Генератор случайных адресов
Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.
Инструмент доступен на других языках
- JSON do tablicy PHP [PL]
- JSON till PHP-array [SV]
- JSONからPHP配列へ [JA]
- JSON เป็น PHP Array [TH]
- JSON sang mảng PHP [VI]
- JSON zu PHP-Array [DE]
- JSON을 PHP 배열로 변환 [KO]
- JSON para Array PHP [PT]
- JSON a Array de PHP [ES]
- تحويل JSON إلى مصفوفة PHP [AR]
- JSON ke Array PHP [ID]
- JSON naar PHP-array [NL]
- JSON vers tableau PHP [FR]
- JSON to PHP Array [EN]
- JSON in array PHP [IT]
- JSON'dan PHP dizisine [TR]
- 从 JSON 到 PHP 数组 [ZH]