Да, есть ограничение на максимальное количество элементов. Структура хеш-таблицы (массивы в основном представляют собой оболочки вокруг хеш-таблицы) определяется следующим образом (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-битными целыми числами, вы всегда достигнете предела памяти, прежде чем это станет проблемой.
Единственное, что я нашел в отношении php взят из bytes.com/forum :
Я не думаю, что существует ограничение на размер массива, но есть ограничение на то, сколько памяти может использовать ваш скрипт.
Директива memory_limit в файле конфигурации php.ini содержит максимальный объем памяти, который могут потреблять ваши скрипты. Попробуйте изменить это, посмотрите, поможет ли это.