PHP: у массивов максимальный размер?

Есть ли предел для массива в PHP?

Да, существует ограничение на максимальное количество элементов. Структура хеш-таблицы (массивы в основном обертки вокруг хеш-таблицы) определяется следующим образом (PHP 5.3):

typedef struct _hashtable { uint nTableSize; uint nTableMask; uint nNumOfElements; ulong nNextFreeElement; Bucket *pInternalPointer; /* Used for element traversal */ Bucket *pListHead; Bucket *pListTail; Bucket **arBuckets; dtor_func_t pDestructor; zend_bool persistent; unsigned char nApplyCount; zend_bool bApplyProtection; #if ZEND_DEBUG int inconsistent; #endif } HashTable; 

При условии

 typedef unsigned int uint; 

предел – это максимальный размер unsigned int (обычно 2 ^ 32-1 для 32-разрядной ОС и для большинства 64-разрядных ОС).

На практике, однако, за исключением машин с большим количеством ОЗУ и 32-битных int, вы всегда будете нажимать на ограничение памяти, прежде чем это станет проблемой.

Единственное, что я нашел в ссылке на php, – это from bytes.com/forum :

Я не думаю, что существует ограничение на размер массива, но есть ограничение на то, сколько памяти может использовать ваш скрипт.

Директива 'memory_limit' в файле конфигурации php.ini содержит максимальный объем памяти, который могут использовать ваши сценарии. Попробуйте изменить это, посмотрите, поможет ли это.

Размер массива зависит от конфигурации сервера и конфигурации php.ini

ini_set('memory_limit', 'XXXM');

Но нет ограничений на количество записей, которые может иметь массив. Только огромный размер массива может привести к «нехватке памяти».