我有一个php数组,我正在使用json_encode进行编码,如下所示。
PHP代码:
$arr=array(10=>"Apple",1=>"Ball",9=>"Cat",11=>"Dog",15=>"Elephant");
echo json_encode($arr);json编码的输出与原始数组保持相同的顺序。但是,当我试图访问javascript中的json_encode输出时,该对象的元素按递增的数字索引排序:
控制台日志:
[{1="Ball",9="Cat",10="Apple",11="Dog",15="Elephant"}]我希望保留与原始数组相同的顺序。这是如何做到的呢?
发布于 2013-08-16 12:10:55
您不应该依赖于javascript对象的键顺序。有关更多信息,请参见这篇文章:
如果顺序很重要,则应该创建一个对象数组,每个对象的位置如下:
{9: "Cat"}正如我链接的文章中描述的那样,如果您只需要按特定顺序迭代,则另一个选项是保留您的结构,使用Object.keys()获取键,然后排序,然后对排序的键进行迭代。
发布于 2013-08-16 12:10:45
尝试引用您的索引(有效地使它们成为String):
$arr = array("10" => "Apple", "1" => "Ball", "9" => "Cat", "11" => "Dog", "15" => "Elephant");
echo json_encode($arr);这将为您提供一个应该看起来像
{
"10": "Apple",
"1": "Ball",
"9": "Cat",
"11": "Dog",
"15": "Elephant"
}如果必须有一个数组,则需要稍微不同地构造PHP数组:
$arr = array(array(10 => "Apple"), array(1 => "Ball"), array(9 => "Cat"), array(11 => "Dog"), array(15 => "Elephant"));
echo json_encode($arr);威尔输出
[
{"10":"Apple"},
{"1":"Ball"},
{"9":"Cat"},
{"11":"Dog"},
{"15":"Elephant"}
]https://stackoverflow.com/questions/18272953
复制相似问题