Запретить сортировку ассоциативного массива json_encode

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

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

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

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

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

См. Этот вопрос по поводу связанного с этим вопроса. Как остановить Chrome и Opera, сортируя объекты JSON по индексу 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); 

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