2013-08-02 109 views
1

這是我想編碼成JSON的數組的var_dump:PHP JSON編碼不工作

array(3) { 
    [0]=> array(2) { 
     ["From"]=> string(14) "08 August 2013" 
     ["To"]=> string(14) "21 August 2013" 
    } 
    [1]=> array(2) { 
     ["From"]=> string(14) "11 August 2013" 
     ["To"]=> string(14) "21 August 2013" 
    } 
    [2]=> array(2) { 
     ["From"]=> string(14) "12 August 2013" 
     ["To"]=> string(14) "01 August 2013" 
    } 
} 

當我進行編碼,輸出看起來是這樣的:

[ 
{"From":"08 August 2013","To":"21 August 2013"}, 
{"From":"11 August 2013","To":"21 August 2013"}, 
{"From":"12 August 2013","To":"01 August 2013"} 
] 

但我想它是這樣的:

{ 
0:{"From":"08 August 2013","To":"21 August 2013"}, 
1:{"From":"11 August 2013","To":"21 August 2013"}, 
2:{"From":"12 August 2013","To":"01 August 2013"} 
} 

這是可能的,因爲我以前做過,但使用相同的代碼,現在它不會工作

+0

嘗試'json_encode($陣列,JSON_FORCE_OBJECT)'。不知道它是否會工作,誠實。 – Phas1c

回答

4

使用:JSON_FORCE_OBJECT參數;

$json = json_encode($array,JSON_FORCE_OBJECT); 

,如果你想這些指標,因爲你想JSON對象的數組將分配數字鍵

+0

也將數組轉換爲對象('json_encode((object)$ array);')也可以。底層數組不會被強制以這種方式反對。這在某些情況下可能更可取 – x4rf41

0

兩個版本都是等效的。默認情況下,JS會爲以0開頭的數組元素進行編號,因此即使未指定它們,您仍然會在稍後解碼時將0,1,2 ......作爲索引。

您可以通過平凡的字符串解碼,例如驗證這一點

$array = array('your array here'); 
$json = json_encode($array); 
$decoded_array = json_decode($json); 
var_dump($decoded_array); 
0

,你鴕鳥政策需要它們,因爲你已經有[],如果您想選擇任何這些對象內部的陣列的你可以已經使用索引的[],如:

例如[0]。從;

每{}指JSON對象和[{},{},{}]表示對象的數組。