一尘不染

防止json_encode关联数组排序

json

我有一个关联数组

Array(
   [289] => Array(
    'name'=> 'One'
   ),
   [292] => Array(
    'name'=> 'One'
   ),
   [290] => Array(
    'name'=> 'One'
   )
)

在我在此数组上使用json_encode之后。密钥已排序,尽管我将其作为JSON对象获取。

有办法防止这种行为吗?


阅读 341

收藏
2020-07-27

共1个答案

一尘不染

没有任何标准表明必须按一定顺序进行。

注意:我们正在谈论的是PHP函数,但结果基本上是javascript,因此有关不存在的标准的声明也适用。

顺便说一句:我已经用以下代码对其进行了测试。PHP本身似乎并没有对数组进行排序,firefox也没有(根据firebug控制台)。

<pre>
<?php
    $array = array();
    $array[289] = array('name'=>'One');
    $array[292] = array('name'=>'One');
    $array[290] = array('name'=>'One');
    print_r($array);
    $string = json_encode($array);
    print_r($string);
?>
</pre>
<script>
    var foo = <?=$string?>;
    console.log(foo);
</script>
2020-07-27