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


Why are php array keys case sensitive?

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

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

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

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

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

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

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