文字変数の算術演算を扱うとき、PHPはCの代わりにPerlの習慣に従います。
学生が質問しました:
コードをコピーします コードは次のとおりです:
<?php for($i = 'A'; $i <= 'Z'; $i++) { echo $i; }
出力は何ですか?
出力は次のとおりです:
ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANOOAPAQARAS……。
なぜですか?
それは実際には?非常に単純な PHP マニュアルには手順が記載されていますが、多くの人はマニュアルを章ごとに注意深く読まないのではないかと思います:
PHP は、文字変数の算術演算を処理する場合、C 言語ではなく Perl の規則に従います。たとえば、次のようになります。 Perl では 'Z'+1 は 'AA' に変わりますが、C では 'Z'+1 は '[' に変わります ( ord('Z') == 90, ord('[') == 91 )。文字変数はインクリメントできますが、デクリメントはできないことに注意してください。また、サポートされるのはプレーン ASCII 文字 (a-z および A-Z) のみです。
文字変数の算術演算を処理する場合、PHP は C の代わりに Perl の習慣に従います。たとえば、Perl では 'Z'+1 は 'AA' を取得しますが、C では 'Z'+1 は '[' を取得します (ord('Z') == 90, ord('[') == 91 )。文字変数は増加のみ可能で減少はできず、純粋な文字 (a ~ z および A ~ Z) のみがサポートされることに注意してください。
言い換えると、次の場合:
$name = "laruence"; ++$name; //将会是"laruencf"
$name = "laruence"; --$name; //没有影响, 还是"laruence"
文字列比較、AA、BB、XX から YZ まではすべて Z 以下です...つまり..
以上がPHP の文字列に対する増分操作の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。