1

コード:

$a = "2c0";

for($i = 0; $i < 25; $i++) {
   print "$a ";
   $a++;
}

出力:

2c0 2c1 2c2 2c3 2c4 2c5 2c6 2c7 2c8 2c9 2d0 2d1 2d2 2d3 2d4 2d5 2d6 2d7 2d8 2d9 2e0 3 4 5 6

なぜ、php?

4

3 に答える 3

1

マニュアルから:

PHP は、C ではなく文字変数の算術演算を扱うとき、Perl の規則に従います。たとえば、PHP と Perl では $a = 'Z'; $a++; $a を 'AA' に変換しますが、C では a = 'Z'; ++; a を '[' に変換します ('Z' の ASCII 値は 90、'[' の ASCII 値は 91)。文字変数はインクリメントできますが、デクリメントはできません。また、プレーン ASCII のアルファベットと数字 (az、AZ、および 0-9) のみがサポートされていることに注意してください。他の文字変数をインクリメント/デクリメントしても効果はなく、元の文字列は変更されません。

++"2c0" で演算子を使用すると、PHP は文字列値をインクリメントして "2c1" にします。"2e0" は科学表記法、つまり として扱われる2 * 10^0 = 2ため、インクリメントすると が得られます3

于 2013-11-11T15:31:24.217 に答える
0

このブログ投稿を参照してください: http://blog.rstack.cc/post/2a0_misunderstanding - 問題を説明し、参照用の php ドキュメントにリンクしています。

于 2013-11-14T16:22:33.020 に答える