ホームページ  >  記事  >  バックエンド開発  >  PHP の文字列に対する増分操作の詳細な分析

PHP の文字列に対する増分操作の詳細な分析

怪我咯
怪我咯オリジナル
2017-07-04 15:01:381353ブラウズ

文字変数の算術演算を扱うとき、PHPはCの代わりにPerlの習慣に従います。

学生が質問しました:

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

<?php 
for($i = &#39;A&#39;; $i <= &#39;Z&#39;; $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"

したがって、この問題の理由は、 $i = Z の場合、 + +$i は AA になり、

文字列比較AA、BB、XX から YZ まではすべて Z 以下です...つまり..

以上がPHP の文字列に対する増分操作の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。