3 回答

TA貢獻1874條經驗 獲得超12個贊
如果您的PHP數組中的數組鍵不是連續的數字,則json_encode() 必須使另一個構造成為一個對象,因為JavaScript數組總是連續地進行數字索引。
array_values()在PHP的外部結構上使用,以丟棄原始的數組鍵,并將其替換為從零開始的連續編號:
例:
// Non-consecutive 3number keys are OK for PHP
// but not for a JavaScript array
$array = array(
2 => array("Afghanistan", 32, 13),
4 => array("Albania", 32, 12)
);
// array_values() removes the original keys and replaces
// with plain consecutive numbers
$out = array_values($array);
json_encode($out);
// [["Afghanistan", 32, 13], ["Albania", 32, 12]]

TA貢獻2016條經驗 獲得超9個贊
json_encode()函數將幫助您在php 中將數組編碼為JSON。
如果您直接使用json_encode函數而沒有任何特定選項,則它將返回一個數組。喜歡上面提到的問題
$array = array(
2 => array("Afghanistan",32,13),
4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]
由于您正在嘗試將Array轉換為JSON,那么我建議使用JSON_FORCE_OBJECT作為json_encode中的附加選項(參數),如下所示
<?php
$array=['apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}
?>

TA貢獻1719條經驗 獲得超6個贊
我想補充一下邁克爾·伯科夫斯基(Michael Berkowski)的答案,即如果將數組的順序顛倒,也可能發生這種情況,在這種情況下,觀察該問題會比較棘手,因為在json對象中,順序將按升序排列。
例如:
[
3 => 'a',
2 => 'b',
1 => 'c',
0 => 'd'
]
將返回:
{
0: 'd',
1: 'c',
2: 'b',
3: 'a'
}
所以這種情況下的解決方案是array_reverse在將其編碼為json之前使用
- 3 回答
- 0 關注
- 565 瀏覽
添加回答
舉報