PHP 配列の領域では、キーと値を扱うときに独特の異常が発生しますこれらのキーの値を設定したにもかかわらず、それらの存在は配列出力ではわかりにくいままです。困惑することに、キーから先頭のゼロを削除すると、この問題は魔法のように解決されます。この興味深い動作の背後にある理由を詳しく調べてみましょう。
PHP は、仕様上、先頭にゼロが付いている数値を 8 進数値として解釈します。これは、10 進数と 16 進数の両方に当てはまります。 07 または 08 を配列キーとして使用すると、PHP はそれらを 10 進整数 (7 と 8) ではなく、8 進数 (それぞれ 7 と 8) として解釈します。
例:
<code class="php">echo 07; // prints 7 echo 010; // prints 8</code>
この特殊性は、配列キーを設定するときに特に顕著になります:
<code class="php">$months['07'] = 'July';</code>
PHP は '07' を 8 進数値として解釈し、実質的に 7 月をキー 7 に割り当てます。ただし、8 進数値は 7 を超えることができないため、実際のキー 8 は実質的に無視され、それに割り当てられた値 (8 月) が消えます。
解決策は、キーから先頭のゼロを削除することです。
<code class="php">$months['7'] = 'July'; $months['8'] = 'August';</code>
先頭のゼロを削除することにより、 , PHP は数値を 10 進整数として認識し、キー 7 と 8 に値を正しく割り当てます。
この動作は PHP マニュアルにも記載されており、数値の前に 0 を付けると 8 進数値として解釈されることが明示的に記載されています。
配列処理におけるこのような異常を回避するには、この数値の癖を理解することが重要です。 10 進整数の規則を遵守し、キーの先頭にゼロを使用しないようにすることで、PHP 配列の期待どおりの動作を保証できます。
以上がPHP 配列でキーと値のペア 07 と 08 が消えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。