Вопрос проверяет понимание внутреннего устройства PHP, работы с памятью и причин, почему массивы считаются “тяжёлой” структурой данных.
В PHP массивы — это не классические массивы, а хеш-таблицы. Они могут хранить данные с любыми ключами и типами. За универсальность приходится платить повышенным расходом памяти. Поэтому большие массивы могут быстро нагружать систему.
Массивы в PHP выглядят просто, но внутри они устроены значительно сложнее, чем обычные массивы в низкоуровневых языках.
Определение:
Массив в PHP — это хеш-таблица, которая может хранить пары ключ–значение, где ключом может быть строка или число.
Под капотом PHP использует структуру, похожую на HashTable.
Каждый элемент — отдельная структура в памяти
Ключ и значение хранятся отдельно
Поддерживаются числовые и строковые ключи
Порядок элементов сохраняется
Это означает, что даже простой массив:
[1, 2, 3]
фактически хранится как набор хеш-элементов, а не как непрерывный блок памяти.
Основные причины повышенного расхода памяти:
Метаданные для каждого элемента
Хранение типа значения
Поддержка хеширования
Сохранение порядка элементов
Массивы удобны, но не экономичны
Большие массивы могут быстро привести к OOM
Для потоковой обработки лучше использовать генераторы
PHP-массивы универсальны и удобны, но дорогие по памяти. Для больших объемов данных стоит использовать альтернативные подходы.