Это не проблема браузера, а злоупотребление структурами данных.
Массив - это упорядоченный набор объектов.Коллекция / объект javascript по определению является неупорядоченным набором.Стандарт ECMA подтверждает это.
Существует относительно древняя проблема проекта Chromium V8, в которой обсуждается длительная тема: http://code.google.com/p/v8/issues/detail?id=164
Суть в том, что Chrome иOpera (и IE9 на самом деле) сортируют элементы вашего объекта с числовыми ключами и помещают их перед любыми членами с помощью строковых ключей.Это сделано из соображений эффективности при доступе к объекту и работает так, как задумано в этих браузерах.FF и IE <9 сохраняют порядок структуры, которую не следует упорядочивать, и хотя они не делают ничего плохого, это поведение менее правильно, чем в Chrome, Opera и IE9.</p>
У вас есть три способа решения этой проблемы в вашем проекте:
Вызовите array_values () для ваших данных, чтобы сделать их неассоциативными.Когда вы json_encode, по умолчанию он будет закодирован как массив.Тогда порядок будет таким, каким он был определен в PHP.Поскольку вы не хотите терять свои ключи, вы должны хранить их в данных объекта.Это предпочтительное решение, которое с наименьшей вероятностью сломается в долгосрочной перспективе.
Определите порядок, в котором вы хотите разместить свои данные, и передайте его в виде массива вместе с данными вашего объекта.Не так хорошо, как описано выше, так как вы в конечном итоге передаете больше данных, чем вам действительно нужно, и это переносит нагрузку на клиента.
Преобразуйте ключи в строки с некоторым буквенным символом наначало или конец каждой клавиши.Это хороший вариант, если вы работаете с унаследованным проектом и практически не управляете своей архитектурой.
Дело в том, что вы, как разработчик, не можете гарантировать, чтопорядок неупорядоченного объекта будет сохранен.Поскольку веб-стандарты движутся в этом направлении, а стандарты ECMA и проекты будущих стандартов продолжают составлять правила, другие браузеры перейдут на это поведение.Также можно скорректировать.
Мораль истории: если вам нужно сохранить порядок, используйте массив.