3 回答

TA貢獻(xiàn)1877條經(jīng)驗 獲得超6個贊
JSON_ENCODE 在 PHP 中保留了鍵順序,但在 Javascript 中并非如此。
在PHP:
$arr = [3 => "A", 1 => "B", 2 => "C"];
echo json_encode($arr);
Output:
{"3":"A","1":"B","2":"C"}
但是如果你嘗試同樣的 Javascript
var obj = {"3":"A","1":"B","2":"C"};
console.log(JSON.stringify(obj));
Output:
"{"1":"B","2":"C","3":"A"}"
要在 javascript 中也保留鍵順序,您需要在 PHP 中創(chuàng)建對象數(shù)組。
$newArr = [];
foreach($arr as $key => $value){
$newArr[] = [$key => $value];
}
echo json_encode($newArr);
Output:
[{"3":"A"},{"1":"B"},{"2":"C"}]
現(xiàn)在您可以在 Javascript 中訪問相同的內(nèi)容。
arrObj = JSON.parse(str);
arrObj.forEach(function(element) {
for (strKey in element) {
console.log(strKey + ' : ' + element[strKey]);
}
});
Output:
3 : A
1 : B
2 : C

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊
您可以使用該JSON_FORCE_OBJECT參數(shù)使json_encode輸出成為對象。這將在輸出中包含 javascript 識別的鍵:
echo json_encode(array_values($new), JSON_FORCE_OBJECT | JSON_UNESCAPED_SLASHES);
輸出:
{
"71": "07/09/2019-Saturday",
"81": "08/09/2019-Sunday",
"83": "09/09/2019-Monday",
"84": "10/09/2019-Tuesday",
"72": "15/09/2019-Sunday",
"73": "16/09/2019-Monday",
"74": "17/09/2019-Tuesday",
"75": "18/09/2019-Wednesday"
}
3v4l.org 上的演示
在 JavaScript 中:
let json = '{\
"71": "07/09/2019-Saturday",\
"81": "08/09/2019-Sunday",\
"83": "09/09/2019-Monday",\
"84": "10/09/2019-Tuesday",\
"72": "15/09/2019-Sunday",\
"73": "16/09/2019-Monday",\
"74": "17/09/2019-Tuesday",\
"75": "18/09/2019-Wednesday"\
}';
let obj = JSON.parse(json);
console.log(obj[72]);
- 3 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報