Являются ли PHP Ассоциативные массивы заказаны?

Я исхожу из фона python, а тип данных python, аналогичный (словарь), является неупорядоченным набором пар значений ключа.

Мне интересно, неупорядочен ли набор ассоциативных массивов PHP? Кажется, они заказаны.

$test = array( 'test' => 'test', 'bar' => 'bar', ); var_dump($test); var_dump(array_slice($test, 0, 1)); 

Тест всегда приходит перед баром, и я могу нарезать этот массив, как вы видите. Так это всегда гарантируется, что вы заказываете через php-версии? Является ли заказ только тем порядком, с которым я объявил массив? Итак, что-то внутренне указывает «тест» на размещение [0] в массиве? Я прочитал http://php.net/manual/en/language.types.array.php, но он не проливает слишком много света на эту проблему. Я ценю ваши ответы. Ty

PHP-ассоциативные массивы (а также числовые массивы) упорядочены , а PHP предоставляет различные функции для обработки порядка ключей массива, таких как ksort() , uksort() и krsort()

Кроме того, PHP позволяет объявлять массивы с числовыми ключами не по порядку:

 $a = array(3 => 'three', 1 => 'one', 2 => 'two'); print_r($a); Array ( [3] => three [1] => one [2] => two ) // Sort into numeric order ksort($a); print_r($a); Array ( [1] => one [2] => two [3] => three ) 

Из документации:

Массив в PHP на самом деле является упорядоченной картой . Карта – это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких различных применений; он может рассматриваться как массив, список (вектор), хеш-таблица (реализация карты), словарь, коллекция, стек, очередь и, возможно, больше. В качестве значений массива могут быть другие массивы, также возможны деревья и многомерные массивы.

В документации указано:

 An array in PHP is actually an ordered map. 

Так что да, они всегда приказаны. Массивы реализуются как хеш-таблица .

Из руководства по php :

Массивы упорядочены. Заказ можно изменить с помощью различных функций сортировки. Дополнительную информацию см. В разделе функций массива .

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