javaScript对象没有';不要保留php中的密钥顺序


javaScript object doesn't keep key order giving from php

我有一个使用json_encode的数组,它在PHP 中看起来像这样

Array
    (
        [4] => Array
            (
                [numberof] => 60
                [date] => 4
            )
        [3] => Array
            (
                [numberof] => 3
                [date] => 3
            )
        [2] => Array
            (
                [numberof] => 6
                [date] => 2
            )
        [1] => Array
            (
                [numberof] => 5
                [date] => 1
            )
        [12] => Array
            (
                [numberof] => 1
                [date] => 12
            )
        [11] => Array
            (
                [numberof] => 0
                [date] => 11
            )
    )

但是,当通过javaScript访问时,顺序将是以下

{
      "1":{"numberof":5,"date":"1"},
      "2":{"numberof":6,"date":"2"},
      "3":{"numberof":3,"date":"3"},
      "4":{"numberof":60,"date":"4"},
      "11":{"numberof":0,"date":"11"},
      "12":{"numberof":1,"date":"12"}
 }

我如何才能保持在PHP中设置的顺序。

JavaScript对象没有排序。

ECMA 5.1第4.3.3节(不保证订单)

对象是属性的集合,并且具有单个原型对象原型可能是null值。

ECMA第三版第4.3.3节(明确表示未订购)

对象是object类型的成员。它是一个无序属性的集合,每个属性包含基元值,对象或函数。存储在对象属性中的函数是称为方法。

即使使用JavaScript"关联数组"(基本上是对象中命名属性的集合),也无法保证顺序。

我是个天才,你应该使用一个所谓的关联数组其中键不是数字而是字符串

//so instead of
   [4] => Array
        (
            [numberof] => 60
            [date] => 4
        )
//make it 
   ["4"] => Array
        (
            [numberof] => 60
            [date] => 4
        )

它可能会保持订单