PHP关联数组的键(索引)限制?

时间:2012-02-29 09:36:07

标签: php arrays key

如果PHP中的数组键存在某些限制?长度 ?不可接受的字符串?

仅在official documentation中找到此信息,但没有关于密钥限制的信息。

  

键可以是整数或字符串。如果一个键是整数的标准表示,它将被解释为这样(即“8”将被解释为8,而“08”将被解释为“08”)。键中的浮点数被截断为整数。索引和关联数组类型在PHP中是相同的类型,它们都可以包含整数和字符串索引。*

3 个答案:

答案 0 :(得分:9)

对数组中用作键的任何字符串进行哈希处理。类似于md5()和sha1(),此散列将(可能是千兆字节)字符减少到已知长度。与md5()或sha1()不同,数组的内部散列机制会将您的字符串转换为整数,然后可以使用该整数来寻址数组中的存储区。 PHP的数组不是真实的/真实的数组 - 它们在内部是某种Linked HashMap。考虑到多个字符串可以归结为相同的散列,每个桶本身就是一个列表。如果同一存储桶中有多个元素,则必须评估每个键。毫无疑问,短键的比较速度超过1MB的文本。

TL; DR:虽然您不受PHP的限制,但您应该限制自己。如果您有相当长的字符串,请考虑通过md5()或sha1()(或实际上任何其他散列函数)运行它们以减少密钥长度。

答案 1 :(得分:4)

What is the max key size for an array in PHP?

这个问题几乎完全相同。但如果你不想信任任何非官方的东西,只要坚持使用较少的小钥匙。您甚至可以从中获得一些性能优势。

编辑:正如The PHP Manual所说:

  

注意:字符串变得非常大没有问题。 PHP对字符串的大小没有限制;唯一的限制是运行PHP的计算机的可用内存..

答案 2 :(得分:-2)

你确定要引用密钥吗?或者你的意思是价值?

带关联数组: $ array = new array( 新阵列(      "键" = GT;"值" ) );

..至于我认为在理论中的关键,但是长度没有限制。如果你想要重新使用它们,那么选择长按键并不是一个好主意.. < / p>

至于值,您应该只在数组中获取一个战利品,以及允许的数据类型和内容..

希望这会有所帮助..