ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルにおける文字列のインクリメンタル操作の分析

PHP_PHP チュートリアルにおける文字列のインクリメンタル操作の分析

WBOY
WBOYオリジナル
2016-07-21 15:34:58805ブラウズ

クラスメートが質問をしました:

コードをコピーします コードは次のとおりです:

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

http://www.bkjia.com/PHPjc/322296.html技術記事クラスメートが質問をしました: 次のようにコードをコピーします: ?php for($i = 'A'; $i = 'Z'; $i++) { echo $i; } 出力は次のとおりです: ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAM。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。