ホームページ > バックエンド開発 > PHPチュートリアル > PHP 配列でキーと値のペア 07 と 08 が消えるのはなぜですか?

PHP 配列でキーと値のペア 07 と 08 が消えるのはなぜですか?

DDD
リリース: 2024-10-20 19:33:30
オリジナル
645 人が閲覧しました

Why Do Key-Value Pairs 07 and 08 Vanish in PHP Arrays?

PHP 配列パズル: キーと値のペア 07 と 08 の謎を解く

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート