Предотвратить сортировку ассоциативного массива JSON-кодирования [дубликат]

этот вопрос уже есть ответ здесь:

У меня ассоциативный массив

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

после использования json_encode в этом массиве. Ключи отсортированы, хотя я получаю его как объект JSON.

есть ли способ предотвратить такое поведение?

2 ответов


нет стандарта, который говорит, что это должно быть в определенном порядке.

ознакомиться с этим вопрос: как остановить сортировку объектов JSON Chrome и Opera по индексу 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>

попробуйте это:

    $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);

это должно работать, по крайней мере, помогает мне !