クラスメートが質問をしました:
コードをコピーします コードは次のとおりです:
for($i = 'A'; $i <= 'Z'; $i++) {
echo $i
}
出力は次のとおりです:
ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMAOAPAQARAS……
なぜですか?非常に簡単です。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 = "larence" ++$name; // "laruencf" になります
そして:
コードをコピーします
コードは次のとおりです: $name = "laruence"; --$name // 効果はありません、"laruence" のままです
それでは、この問題の理由は次のとおりです。は $i = Z のとき このとき、++$i は AA となり、文字列比較では
AA、BB、XX ~ YZ はすべて Z 以下となる…ということで…
http://www.bkjia.com/PHPjc/322296.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/322296.html技術記事クラスメートが質問をしました: 次のようにコードをコピーします: ?php for($i = 'A'; $i = 'Z'; $i++) { echo $i; } 出力は次のとおりです: ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAM。 ..