用作数组中键的任何字符串都是经过哈希处理的.类似于md5()和sha1(),此散列将(可能是千兆字节)字符减少到已知长度.与md5()或sha1()不同,数组的内部散列机制会将您的字符串转换为整数,然后可以使用该整数来寻址数组中的存储区.PHP的数组不是真正的/真实的数组 - 它们在内部是某种Linked HashMap.考虑到多个字符串可以归结为相同的散列,每个桶本身就是一个列表.如果同一存储桶中有多个元素,则必须评估每个键.毫无疑问,短键的比较速度超过1MB的文本.
TL; DR:虽然您不受PHP的限制,但您应该限制自己.如果您有相当长的字符串,请考虑通过md5()或sha1()(或实际上任何其他散列函数)运行它们以减少密钥长度.
这个问题几乎完全一样。但是,如果您不想相信任何非官方的东西,请坚持使用较少的小密钥。您甚至可以从中获得一些性能优势。
编辑:正如PHP 手册所说:
注意:字符串变得非常大是没有问题的。PHP 对字符串的大小没有限制;唯一的限制是运行 PHP 的计算机的可用内存。