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

Существует ли предел для массива в PHP?

30
задан hakre 19 November 2011 в 23:48
поделиться

2 ответа

Да, есть ограничение на максимальное количество элементов. Структура хеш-таблицы (массивы в основном представляют собой оболочки вокруг хеш-таблицы) определяется следующим образом (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;

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

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

44
ответ дан 27 November 2019 в 23:55
поделиться

Единственное, что я нашел в отношении php взят из bytes.com/forum :

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

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

8
ответ дан 27 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: