6

在查看一些代码并尝试解决一些问题时,我遇到了一个问题。为什么 PHP 数组键区分大小写?似乎有好处

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

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

4

1 回答 1

12

PHP 数组是用哈希表实现的。哈希表的工作方式,首先是:它对输入进行哈希处理并将其用作索引来找到插入对象的正确内存位置。

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

此外,在大多数其他语言中,Key并被key区别对待。PHP 当然并不总是遵循最小意外的原则,但在这种情况下它确实如此——而且它应该是这样的。

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

于 2013-10-28T22:29:45.193 回答