Тип массива PHP на самом деле больше похож на упорядоченную карту, чем на традиционный массив C. Это исходная структура данных общего использования PHP. В руководстве говорится, что можно сказать The indexed and associative array types are the same type in PHP, which can both contain integer and string indices.Каковы практические различия между «ассоциированными» и «индексированными» массивами в PHP?
Однако существует множество случаев, когда встроенные функции языка будут проводить различие между «проиндексированными» массивами (массивами с последовательными, целыми ключами) и «ассоциативными» массивами (массивы с непересекающимися и/или ключами смешанные типы).
Одним из примеров является функция array_merge.
Если входные массивы имеют одинаковые строковые ключи, то более позднее значение для этого ключа перезапишет предыдущий. Если, однако, массивы содержат числовые клавиши, более поздняя величина не будет перезаписывать исходное значение, но будет добавлена.
Если задан только один массив, и массив численно проиндексирован, ключи будут повторно проиндексированы непрерывным образом.
Каковы другие места на PHP, где проводится различие между индексированными и ассоциативными массивами? Меня особенно интересуют различия в Userland, хотя любое представление о реализации Array в источнике PHP было бы интересно.
+1 для получения дополнительной информации, но следует отметить, что вы можете перебрать как индексированный массив, так и ассоциированный массив с помощью следующей функции(). Другими словами, ассоциативные массивы по-прежнему имеют некоторую внутреннюю концепцию порядка. –
Истинно, и по этим линиям индексированный массив не обязательно имеет ожидаемый порядок - скорее, порядок, который использует массив (с 'foreach' или' next() ', разумеется) зависит от того, , поэтому, если $ arr [3] был установлен до $ arr [2], этот порядок будет сохранен при повторении. –