Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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');

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