代码:
$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 五 6
为什么,php?
答案 0 :(得分:3)
2e0
被解释为2 * 10^0
(请参阅PHP exponentiation),其为2.因此下一个值为3.
答案 1 :(得分:1)
从手册:
PHP在处理字符变量而不是C的算术运算时遵循Perl的约定。例如,在PHP和Perl $ a ='Z'中; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;将a转换为'['('Z'的ASCII值为90,'['的ASCII值为91)。请注意,字符变量可以递增但不递减,即使只支持纯ASCII字母和数字(a-z,A-Z和0-9)。递增/递减其他字符变量无效,原始字符串不变。
在“2c0”上使用++
运算符会导致PHP增加字符串值,即“2c1”。 “2e0”被视为科学记数法,即2 * 10^0 = 2
,因此递增得出3
。
答案 2 :(得分:0)
请参阅此博文:http://blog.rstack.cc/post/2a0_misunderstanding - 它解释了问题并链接了php文档以供参考。