JSON и PHP массивы - PullRequest
       2

JSON и PHP массивы

14 голосов
/ 08 сентября 2011
json_encode(array(
    array(0 => "431.940054495913"),
    array(1 => "431.940054495913"),
));

отображается так:

[
    ["431.940054495913"],
    {"1":"431.940054495913"}
]

Почему два массива отображаются по-разному?

1 Ответ

17 голосов
/ 08 сентября 2011

Любой массив PHP, который может быть отображен как массив JSON, будет представлен как массив JSON. Любой массив PHP, имеющий только последовательные числовые ключи, начинающиеся с 0, будет представлен как массив JSON.

Это относится к первому массиву: array(0 => "431.940054495913").

Как это исправить

  • Флаг JSON_FORCE_OBJECT отобразит все массивы PHP в виде объектов JSON

    json_encode(array(0 => "431.940054495913"), JSON_FORCE_OBJECT);
    // {"0": "431.940054495913"}
    
    json_encode(array(0 => "431.940054495913"));
    // ["431.940054495913"]
    
  • Кроме того, вы можете преобразовать ваш массив PHP в объект PHP:

    json_encode( (object) array(0 => "431.940054495913"));
    // {"0": "431.940054495913"}
    

    (если вы не хотите отображать каждый массив как объект или если у вас нет JSON_FORCE_OBJECT)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...