字符串自增

今天在V站上看到一个很有意思的php面试题:

$a = 'zzz';
$a++;
echo $a;

一看到这个题,脑子里立马反应:这不是很简单么,字符串转化为数字0,然后自增1,输出$a就为1啊。

然后我自己运行了一下,输出:aaaa。人生观炸裂啊,这是个什么原理。

看了一下别人的回复,然后打开手册(http://php.net/manual/zh/language.operators.increment.php)找到这么一句话:

在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '[''Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。

果然还是naive啊,果然手册才是最好的自学教程,没事就要多翻翻啊


书山有路勤为径 学海无涯苦作舟