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

怪我咯
リリース: 2023-03-12 16:32:01
オリジナル
1406 人が閲覧しました

文字変数の算術演算を扱うとき、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!