[英]How do I encode a PHP array to a JSON array, not object?
我正在嘗試json_encode從Zend_DB查詢返回的數組。
var_dump給出:(手動添加0成員不會改變圖片。)
array(3) {
[1]=>
array(3) {
["comment_id"]=>
string(1) "1"
["erasable"]=>
string(1) "1"
["comment"]=>
string(6) "test 1"
}
[2]=>
array(3) {
["comment_id"]=>
string(1) "2"
["erasable"]=>
string(1) "1"
["comment"]=>
string(6) "test 1"
}
[3]=>
array(3) {
["comment_id"]=>
string(1) "3"
["erasable"]=>
string(1) "1"
["comment"]=>
string(6) "jhghjg"
}
}
編碼的字符串如下所示:
{"1":{"comment_id":"1","erasable":"1","comment":"test 1"},
"2":{"comment_id":"2","erasable":"1","comment":"test 1"},
"3":{"comment_id":"3","erasable":"1","comment":"jhghjg"}}
我需要的是:
[{"comment_id":"1","erasable":"1","comment":"test 1"},
{"comment_id":"2","erasable":"1","comment":"test 1"},
{"comment_id":"3","erasable":"1","comment":"jhghjg"}]
這是php.ini / json_encode文檔所說的應該是什么樣子。
你是如何設置初始陣列的?
如果你設置如下:
array(
"1" => array(...),
"2" => array(...),
);
那么你沒有一個帶有數字索引但是字符串的數組,並且它已轉換為JS世界中的對象。 如果您沒有設置嚴格的順序(即從0開始而不是1開始),也會發生這種情況。
但是,這是在黑暗中拍攝的,因為我無法看到您的原始代碼:首先嘗試設置數組而不使用鍵:
array(
array(...),
array(...),
);
添加了有關Seb答案的信息。
php > print json_encode( array( 'a', 'b', 'c' ) ) ;
["a","b","c"]
php > print json_encode( array( 0 => 'a', 1 => 'b', 2 => 'c' ) ) ;
["a","b","c"]
php > print json_encode( array( 1 => 'a', 2 => 'b', 3 => 'c' ) ) ;
{"1":"a","2":"b","3":"c"}
php >
注意:它以這種方式格式化它有充分的理由:
如果你要發送
{"1":"a","2":"b","3":"c"}
如
["a","b","c"]
當您在Php中執行$data[1]
,您將返回“a”,但在JavaScript方面,您將返回“b”。
在php中測試傳統的連續數組的常用方法是檢查索引“0”。 嘗試將其添加到您的數組,它可能會認為它是一個數組而不是hashmap。
我有一個類似的問題,在json_encode字符串周圍添加''(單引號)后得到它的工作。 從我的js文件開始:
var myJsVar = <?php echo json_encode($var); ?> ; -------> NOT WORKING
var myJsVar = '<?php echo json_encode($var); ?>' ; -------> WORKING
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.