使用json_encode时,PHP数组转换为int

时间:2012-07-10 09:26:54

标签: php json

我有以下数组结构:

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)的数组都会被转换为整数而不是数组。

E.g。

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

转换为..

{"2":[10]

而不是..

{"2":[0:10]

如果能解决问题,JSON可以使用字符串索引而不是整数。

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

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:4)

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

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

如果您想强制json_encode输出对象,例如您的示例,则可以选择JSON_FORCE_OBJECTsee docu)选项:

$encoded = json_encode( yourArray, JSON_FORCE_OBJECT );

答案 1 :(得分:2)

JSON_FORCE_OBJECT中使用json_encode标记。