Есть ли предел для массива в 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');
Но нет ограничений на количество записей, которые может иметь массив. Только огромный размер массива может привести к «нехватке памяти».