json_encode не ставит квадратную скобку
$array = [
'111' => '1111',
'222' => [
'333' => '3333',
'444' => '444'
]
];
var_dump( json_encode( $array ) );
?>
Ожидаю получить
string(47) "{"111":"1111","222":[{"333":"3333","444":"444"}]}"
А получаю
string(47) "{"111":"1111","222":{"333":"3333","444":"444"}}"
Что я делаю не так?
Ответы (2 шт):
Автор решения: Алексей Ульянов
→ Ссылка
Понял. Нужно писать
$array = [
'111' => '1111',
'222' => [[
'333' => '3333',
'444' => '444'
]]
];
Автор решения: Алексей Шиманский
→ Ссылка
Ожидаемая конструкция [{"333":"3333","444":"444"}] лишена смысла, потому что вы ожидаете массив с одним элементом в котором находится всё тот же объект с множеством элементов, вместо того, чтобы ожидать сразу этот объект
Вы же даёте на вход ассоциативный массив с двумя элементами ключ-значение, вы его на выходе и получаете. Т.к. в JS ассоциативный массив - объект - результат закономерен.
