Предотвратить сортировку ассоциативного массива JSON-кодирования [дубликат]
этот вопрос уже есть ответ здесь:
- json_encode не сохранение порядка 2 ответы
У меня ассоциативный массив
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);
это должно работать, по крайней мере, помогает мне !