JSON в массив PHP

Вставьте документ JSON и получите литерал массива PHP, отформатированный для исходного файла .php: краткий синтаксис массивов ([...]), правильные отступы, корректно заключённые в кавычки строки, вложенные объекты становятся ассоциативными массивами, а массивы остаются индексированными. Удобно для встраивания фикстур API в тесты или для заполнения конфигурационных файлов.

Как преобразовать JSON в PHP

  1. 1

    Вставьте JSON

    Любой корректный JSON: объекты, массивы, глубоко вложенные структуры.

  2. 2

    Выберите синтаксис

    Краткий `[...]` (PHP 5.4+) или длинный `array(...)` (сейчас нужен редко).

  3. 3

    Выберите кавычки для строк

    Одинарные кавычки (без интерполяции, апострофы экранируются) или двойные кавычки (допускают интерполяцию `$`: обычно не то, что нужно для данных).

  4. 4

    Скопируйте массив

    Вставьте в файл `.php`, присвойте `return` или оберните в `config([...])`.

Пример

Ввод:

{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }

Результат (краткий синтаксис, одинарные кавычки):

[
    'app' => [
        'name' => 'Hyperion',
        '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 или свойство класса. Компактный вывод остаётся легко компонуемым.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Шпаргалка по регулярным выражениям

Поисковый справочник регулярных выражений для JavaScript, PCRE2/PHP, Python re и .NET. Сравнивайте токены, синтаксис движков, якоря, группы, проверки и флаги.

Инструмент доступен на других языках