防止json_encode关联数组排序

时间:2014-01-19 11:54:14

标签: php associative-array json

我有一个关联数组

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

我在这个数组上使用json_encode之后。密钥已排序,但我将其作为JSON对象。

有没有办法阻止这种行为?

2 个答案:

答案 0 :(得分:5)

  

没有标准表明它必须按照一定的顺序。

请参阅此相关问题:How do you stop Chrome and Opera sorting JSON objects by Index ASC?

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

btw:我已使用以下代码对其进行了测试。 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>

答案 1 :(得分:-3)

试试这个:

    $ar = array();
    $ar[1] = array('1'=>'one');
    $ar[2] = array('2'=>'two');
    $ar[3] = array('3'=>'three');
    print_r($ar);
    $str= json_encode($ar);
    print_r($str);

它应该有效,至少可以帮助我!