PHP:数组有最大大小吗?
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;
限制是无符号 int 的最大大小(在 32 位操作系统和大多数 64 位操作系统上通常为 2^32-1)。
但是,在实践中,除了在具有大量RAM和32位int的计算机上之外,您始终会在这成为问题之前达到内存限制。
我在提到php时遇到的唯一一件事是来自 bytes.com/forum:
我不认为数组的大小有限制,但脚本可以使用多少内存是有限制的。
php.ini 配置文件中的 'memory_limit' 指令保存脚本可以使用的最大内存量。尝试更改此内容,看看是否有帮助。