Поддерживает ли php порядок в ассоциативном массиве?

Возможный дубликат:
Являются ли PHP Ассоциативные массивы заказаны?

Если я добавляю элементы в ассоциативный массив с разными ключами, сохраняется ли порядок добавления? Как я могу получить доступ к «предыдущим» и «следующим» элементам данного элемента?

Related of "Поддерживает ли php порядок в ассоциативном массиве?"

Да, php-массивы имеют неявный порядок. Используйте reset , next , prev и current – или только цикл foreach – для проверки.

Да, он сохраняет заказ. вы можете думать о php-массивах как о заказанных хэш-картах .

Вы можете думать о том, что элементы упорядочиваются по «времени создания индекса». Например

 $a = array(); $a['x'] = 1; $a['y'] = 1; var_dump($a); // x, y $a = array(); $a['x'] = 1; $a['y'] = 1; $a['x'] = 2; var_dump($a); // still x, y even though we changed the value associated with the x index. $a = array(); $a['x'] = 1; $a['y'] = 1; unset($a['x']); $a['x'] = 1; var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated с $a = array(); $a['x'] = 1; $a['y'] = 1; var_dump($a); // x, y $a = array(); $a['x'] = 1; $a['y'] = 1; $a['x'] = 2; var_dump($a); // still x, y even though we changed the value associated with the x index. $a = array(); $a['x'] = 1; $a['y'] = 1; unset($a['x']); $a['x'] = 1; var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated 

Подводя итог, если вы добавляете запись, в которой в настоящее время не существует ключа в массиве, позиция записи будет в конце списка. Если вы обновляете запись для существующего ключа, позиция не изменяется.

foreach петли над массивами с использованием естественного порядка, показанного выше. Вы также можете использовать next () current () prev () reset () и друзей, если хотите, хотя они редко используются, поскольку foreach был введен в язык.

Кроме того, print_r () и var_dump () выводят свои результаты, используя порядок естественного массива.

Если вы знакомы с java, LinkedHashMap является наиболее похожей структурой данных.