是的,元素的最大数量有限制。哈希表结构(数组基本上是哈希表的包装器)定义如下(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 的最大大小(在 32 位操作系统和大多数 64 位操作系统上通常为 2^32-1)。
然而,在实践中,除了具有大量 RAM 和 32 位整数的机器之外,在这成为问题之前,您总是会达到内存限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)