Если я хочу использовать неассоциативный массив PHP, как словарь, и добавить большой ключ, сколько памяти будет выделяться PHP?
$myArray = Array(); $myArray[6000] = "string linked to ID 6000"; $myArray[7891] = "another key-value pair";
Будет ли PHP также выделять память для неиспользуемых ключей 0-5999 и 6001-7890?
Нет, PHP не реализует это как массив стиля C. Массивы Php являются ассоциативными контейнерами, как утверждает статья php о состояниях массивов .
Массив в PHP на самом деле является упорядоченной картой. Карта – это тип, который связывает значения с ключами.
Поскольку порядок сохраняется, массив, скорее всего, будет своего рода двоичным деревом поиска. Если вы не знакомы с бинарными деревьями поиска, я предлагаю собрать хорошую книгу структур данных, чтобы узнать больше или проверить эту статью в википедии для краткого изложения. В приведенном выше примере вы получите двоичное дерево поиска с двумя узлами – одно для данных с ключом 6000, другое для ключа 7891.
Он не будет выделять память для индексов 0-5999.