Нередко возникает необходимость передать данные с PHP-бекенда на JavaScript-фронтенд. Фреймворки вроде Laravel автоматически конвертируют возвращаемые значения в JSON, однако при работе со сложными каталогами, например на Drupal, потребуются дополнительные усилия.
Решение простое — сформировать многоуровневый массив и преобразовать его в JSON с помощью встроенной функции json_encode().
Пример
$objects = [
[
'title' => 'Townhouse on the coast',
'nid' => 12,
'location' => [
'costa' => ['id' => '73', 'name' => 'Costa Maresme'],
'city' => ['id' => '11', 'name' => 'Barcelona'],
'town' => ['id' => '3', 'name' => 'Eixample'],
]
],
[
'title' => 'Sweet Home',
'nid' => 13,
'location' => [
'costa' => ['id' => '73', 'name' => 'Costa Maresme'],
'city' => ['id' => '11', 'name' => 'Montgat'],
'town' => ['id' => '3', 'name' => 'Centro'],
]
],
];
echo json_encode( $objects );
Функция json_encode() рекурсивно обходит массив любой вложенности и возвращает валидную JSON-строку, которую можно передать в JavaScript напрямую или через AJAX-ответ.