Какая команда в PHP для преобразования массива в JSON?

«Какая команда в PHP для преобразования массива в JSON?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PHP для преобразования массива (или любого сериализуемого значения) в JSON-строку используется встроенная функция json_encode().

Базовый пример:

$userData = [
    'name' => 'Анна',
    'age' => 28,
    'skills' => ['PHP', 'Laravel', 'MySQL'],
    'isActive' => true
];

$jsonString = json_encode($userData);
echo $jsonString;
// Вывод: {"name":"u0410u043du043du0430","age":28,"skills":["PHP","Laravel","MySQL"],"isActive":true}

Важные флаги и обработка ошибок:

  • JSON_PRETTY_PRINT — для читаемого форматирования с отступами.
  • JSON_UNESCAPED_UNICODE — чтобы кириллица и другие символы оставались в читаемом виде, а не в виде u-последовательностей.
  • JSON_THROW_ON_ERROR (начиная с PHP 7.3) — чтобы функция бросала исключение JsonException при ошибке, вместо молчаливого возврата false.

Улучшенный пример с обработкой ошибок:

try {
    $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    echo 'Ошибка кодирования JSON: ', $e->getMessage();
    // Логируем или обрабатываем ошибку, возможно в данных есть ресурс (resource) или несериализуемый объект
}

Для обратного преобразования (из JSON в массив) используется json_decode($jsonString, true), где второй параметр true указывает на возврат ассоциативного массива, а не объекта stdClass.