Php 为什么是2a0++;等于2a1,但等于2e0++;等于3?

Php 为什么是2a0++;等于2a1,但等于2e0++;等于3?,php,Php,代码: $a=“2c0”; 对于($i=0;$i是 2 < /代码>的科学符号。所以 2 + 1=3 < /代码>。您应该真正考虑不混合数据类型!有一个非常好的 /r/LoLPHP 线程解释这个 2E0是 2 < /代码>的科学符号。所以 2 + 1=3 < /代码>。您应该真正考虑不混合数据类型。锿! $a = "2c0"; for($i = 0; $i < 25; $i++) { print "$a "; $a++; }

代码:

$a=“2c0”;
对于($i=0;$i<25;$i++){
打印“$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. 六,


为什么,php?

2e0
被解释为
2*10^0
(请参阅)这是2。因此,下一个值将是3。

2e0
被解释为
2*10^0
(请参阅),即2。因此,手册中的下一个值为3。

PHP在处理字符变量的算术运算时遵循Perl的约定,而不是C。例如,在PHP和Perl中$a='Z'$a++;将$a转换为'AA',而在C中a='Z';a++;将a转换为“[”(ASCII值“Z”为90,ASCII值“[”为91)。请注意,字符变量可以递增,但不能递减,即使如此,也只支持普通ASCII字母和数字(a-Z、a-Z和0-9)。递增/递减其他字符变量无效,原始字符串不变

在“2c0”上使用
++
运算符会导致PHP增加字符串值,因此“2c1”。“2e0”被视为科学符号,即
2*10^0=2
,因此,从手册中增加得出
3

PHP在处理字符变量而不是C的算术运算时遵循Perl的惯例。例如,在PHP和Perl中,$a='Z';$a++;将$a转换为'AA',而在C中,='Z';a++;将a转换为'['(ASCII值'Z'为90,'['为91)。请注意,字符变量可以递增,但不能递减,即使如此,也只支持普通ASCII字母和数字(a-z、a-z和0-9)。递增/递减其他字符变量无效,原始字符串不变


在“2c0”上使用
++
运算符会导致PHP增加字符串值,从而增加“2c1”。“2e0”被视为科学符号,即,
2*10^0=2
,因此递增即得到
3

参见此博客帖子:-它解释了问题并链接了php文档以供参考。

参见此博客帖子:-它解释了问题并链接了php文档以供参考。

有一个非常好的
/r/lolphp
线程“<代码> 2E0< /代码>是<代码> 2 < /代码>的科学符号。所以<代码> 2 + 1=3 < /代码>。您应该真正考虑不混合数据类型!有一个非常好的<代码> /r/LoLPHP 线程解释这个<代码> 2E0<代码>是<代码> 2 < /代码>的科学符号。所以<代码> 2 + 1=3 < /代码>。您应该真正考虑不混合数据类型。锿!
$a = "2c0";

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