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 ассоциативный массив - объект - результат закономерен.

→ Ссылка