2013-10-28 2 views
5

いくつかのコードを見て、いくつかの問題を修正しようとしているうちに、私は質問になりました。 PHP配列キーで大文字と小文字が区別される理由持っていると有益に思えるでしょう。php配列キーで大文字と小文字が区別されるのはなぜですか?

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

は同じ鍵です。誰かが私にこれらの2つのキーを分離させる利点を説明できますか?

+6

キーは大文字と小文字が区別されます。なぜなら、キーは!== "Key" 'で、異なる文字列であるためです。 –

+6

私は、彼らが大文字と小文字を区別しないようにするメリットを説明するために、大文字と小文字を区別しないようにすると検索が遅くなります。大文字小文字を区別したくない場合は、キーを小文字に変換してから使用してください。 – halfer

+0

便宜上、ユーザーが適切な場合にデータを入力する必要はありません。たとえば、URL文字列の場合:file.php?var1 = 37&Var2 = 73&VAr = 9 –

答えて

10

PHP配列are implemented with hash tables。ハッシュテーブルの仕組みは一次です。入力をハッシュし、それをインデックスとして使用して、オブジェクトを挿入するための正しいメモリ位置を見つけます。

あなたの配列は大文字と小文字を区別しないとしましょう。単一のハッシュルックアップを行うのではなく、2 ^(あなたの文字列の長さ)ハッシュルックアップを行う必要があります。さらに、これらの場所のうち、どちらを選択しますか?突然、エレガントでシンプルなハッシュテーブルは、計算上も実装時にも、はるかに複雑になりました。

さらに、他のほとんどの言語では、Keykeyは異なる方法で処理されます。 PHPは必ずしも最小の驚きの原則を必ずしも守っているわけではありませんが、この場合はPHPがそうしなければなりません。

他のユーザーが指摘したように、この動作は、必要に応じて簡単に取得できます。挿入または参照する前にキーを小文字に変換するだけです。

+3

、またはハッシュ化する前にキーを小文字に変換できます –

関連する問題