为什么php数组键区分大小写?

时间:2013-10-28 22:22:31

标签: php

在查看一些代码并尝试修复某些问题时,我提出了一个问题。为什么PHP数组键区分大小写?

似乎是有益的
$array = array(
   "Key"=>"Value",
   "key"=>"Value",
)

是同一把钥匙。有人可以向我解释将这两个键分开的好处吗?

1 个答案:

答案 0 :(得分:11)

PHP数组are implemented with hash tables。哈希表的工作方式,第一个顺序:它哈希输入并使用它作为索引来找到插入对象的正确内存位置。

现在假设您的数组不区分大小写。您现在必须执行2 ^(字符串的长度)哈希查找,而不是执行单个哈希查找。此外,在这些地点中,您选择哪一个?突然间,您的优雅,简单的哈希表在计算和实现方面变得更加复杂。

此外,在大多数其他语言中,Keykey的处理方式不同。 PHP肯定并不总是遵循最小惊喜的原则,但在这种情况下确实如此 - 这就是它应该如何。

正如其他用户所指出的那样,如果您需要,这种行为很容易获得:只需在插入和/或引用它们之前将您的密钥转换为小写。