2013-10-28 31 views
5

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

$array = array(
    "Key"=>"Value", 
    "key"=>"Value", 
) 

是相同的密钥似乎是有益的。有人可以向我解释将这两个密钥分开的好处吗?

+6

键区分大小写,因为“key”!==“Key”',因为它们是不同的字符串。 –

+6

我认为责任人会解释让他们不区分大小写的好处。添加不区分大小写会减慢查找速度 - 如果您希望它们不区分大小写,请在使用之前将其转换为小写字母。 – halfer

+0

好处是不需要确保用户在正确的情况下输入数据...例如在url字符串中:file.php?var1 = 37&Var2 = 73&VAr = 9 –

回答

10

PHP数组are implemented with hash tables。散列表的工作方式,以一阶:散列输入并将其用作索引以找到插入对象的正确内存位置。我们想象你的数组是不区分大小写的。而不是做一个单一的哈希查找,你现在必须做2 ^(你的字符串的长度)哈希查找。此外,在这些地点,您选择哪一个?突然之间,您的优雅简单的哈希表在计算上和实现上都变得复杂得多。

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

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

+3

,或者可以在密钥散列之前将密钥转换为小写 –

相关问题