PHP数组在使用json_encode时会转换为int


PHP array gets converted to int when using json_encode

我有以下数组结构:

Array
(
    [t] => 812
    [0] => Array
    (
        [5] => 649
        [6] => 12
    )
    [2] => Array
    (
        [0] => 10
    )
    [3] => Array
    (
        [0] => 1
    )
    [4] => Array
    (
        [0] => 152
    )
)

目前,所有数组索引(除了t)都是整数。

我想使用JSON_encode()将其转换为等效的JSON,但当我这样做时,任何只有一个索引(索引0)的数组都会被转换为整数,而不是数组。

例如

[2] => Array
(
    [0] => 10
)

转换为.

{"2":[10]

而不是。。

{"2":[0:10]

如果解决了这个问题,那么JSON使用字符串索引而不是整数就可以了。。

{"2":["0":10]}

你有没有想过我该怎么解决这个问题?

它们不会转换为单个整数,而是转换为只有一个元素的数组!

在JSON中,方括号[]表示数组,而花括号{}表示对象。

如果您想强制json_encode输出对象,就像在您的示例中一样,您可以选择选项JSON_FORCE_OBJECT(请参阅docu):

$encoded = json_encode( yourArray, JSON_FORCE_OBJECT );

json_encode中使用JSON_FORCE_OBJECT标志。