Являются ли PHP Ассоциативные массивы заказаны? - программирование
Подтвердить что ты не робот

Являются ли 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

4b9b3361

Ответ 1

упорядочиваются ассоциативные массивы 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 на самом деле является упорядоченной картой. Карта - это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких различных применений; он может рассматриваться как массив, список (вектор), хеш-таблица (реализация карты), словарь, коллекция, стек, очередь и, возможно, больше. В качестве значений массива могут быть другие массивы, также возможны деревья и многомерные массивы.

Ответ 2

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

An array in PHP is actually an ordered map.

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

Ответ 3

Из php manual:

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

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