クラスメートが質問をしました:
コードをコピーします コードは次のとおりです:
for($i = 'A'; $i <= 'Z'; $i++) {
echo $i;
}
//出力は何ですか?
出力は次のとおりです:
コードは次のとおりです:
ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAイアジャカラマナオパカラス……
なぜ?
実際は非常に簡単です、PHP マニュアルにも説明がありますが、多くの人はマニュアルを章ごとに注意深く読まないのではないかと思います:
コードをコピーします コードは次のとおりです:
PHP は、C ではなく文字変数の算術演算を処理する場合、Perl の規則に従います。たとえば、Perl では 'Z'+1 は 'AA' に変わりますが、C では 'Z'+1 は '[' ( ord(' Z') == 90、ord('[') == 91 )。文字変数は増分できますが、減分はできません。また、算術演算を扱う場合は、プレーン ASCII 文字 (a ~ z および A ~ Z) のみがサポートされることに注意してください。文字変数の操作、PHP は Perl の習慣に従い、C ではありません。たとえば、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 以下になる…ということです。
Author: laruence
http://www.bkjia.com/PHPjc/322462.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/322462.html技術記事クラスメートが質問しました。 コードをコピーします。 コードは次のとおりです。 ?php for($i = 'A'; $i = 'Z'; $i++) { echo $i; } // 出力は何ですか?出力は次のとおりです。 コードをコピーします。 コードは次のとおりです。 ABCDEFGHIJKLMNOPQRSTUVW...