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

3

2e0被解释为2 * 10^0(见PHP exponentiation),即 2。因此下一个值将是 3。

于 2013-11-11T15:25:46.250 回答
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 回答