Упорядочены ли ассоциативные массивы 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 но это не проливает слишком много света на этот вопрос. Я ценю ваши ответы. Тай
3 ответов:
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 на самом деле упорядоченный карта. Карта-это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких различных применений; он может рассматриваться как массив, список (вектор), хэш-таблица (реализация карты), словарь, коллекция, стек, очередь и, вероятно, больше. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.
на документация гласит:
An array in PHP is actually an ordered map.Так что да, они всегда упорядочены. Массивы реализуются как хэш-таблицы.
с php manual:
массивы прикажут. Порядок может быть изменен с помощью различных функций сортировки. Смотрите функции для работы с массивами для получения дополнительной информации.
я полагался на то, что они упорядочены, и он работал последовательно в каждом проекте, который у меня был.
Comments