在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;
限制是无符号整数的最大大小(在32位操作系统和大多数64位操作系统上通常为2^32-1)。
然而,在实践中,除非在具有大量内存和32位整数的计算机上,否则您将始终在达到内存限制之前遇到此问题。
关于php,我找到的唯一信息来自bytes.com/forum:
我认为数组大小没有限制,但是脚本可以使用的内存有限制。
在php.ini配置文件中,'memory_limit'指令控制着脚本可以消耗的最大内存。尝试更改这个值,看看是否有所帮助。