Есть ли предел для массива в PHP?
PHP: у массивов максимальный размер?
Ответ 1
Да, существует ограничение на максимальное количество элементов. Структура хеш-таблицы (массивы в основном обертки вокруг хэш-таблицы) определяется следующим образом (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, вы всегда будете нажимать на ограничение памяти, прежде чем это станет проблемой.
Ответ 2
Единственное, что я нашел в ссылке на php, - это bytes.com/forum:
Я не думаю, что существует ограничение на размер массива, но существует ограничение на количество памяти, которую может использовать ваш script.
Директива 'memory_limit' в файле конфигурации php.ini содержит максимальный объем памяти, который могут использовать ваши сценарии. Попробуйте изменить это, посмотрите, поможет ли это.
Ответ 3
Размер массива зависит от серверной памяти и конфигурации php.ini
ini_set('memory_limit', 'XXXM');
Но нет ограничений на количество записей, которое может иметь массив. Только огромный размер массива может привести к "нехватке памяти".