2012-07-10 35 views
-1

當我有以下陣列結構爲int:PHP數組被轉換使用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)的數組都會轉換爲整數而不是數組。

E.g.

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

被轉換成..

{"2":[10] 

,而不是..

{"2":[0:10] 

它會是精緻的JSON使用字符串的索引,而不是整數,如果這能解決問題..

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

任何你ghts我如何解決這個問題?

+0

'[]'是一個數組。 '{}'是一個對象 – PeeHaa 2012-07-10 09:29:41

+0

調試很糟糕,但有時候是必要的。 – hakre 2012-07-18 08:21:43

回答

4

它們不會被轉換爲單個整數,而會轉換爲只有一個元素的數組!

在JSON方括號內[]表示一個數組,而大括號{}表示一個對象。

如果你想在你的榜樣,迫使json_encode輸出對象一樣,你可以選擇的選項JSON_FORCE_OBJECTsee docu):在json_encode

$encoded = json_encode(yourArray, JSON_FORCE_OBJECT); 
+0

完美,很好地訣竅。我只是遍歷數組,並將所有東西都轉換爲字符串!這是一個更好的解決方案..謝謝! – RichW 2012-07-10 09:33:46

2

使用JSON_FORCE_OBJECT標誌。