今天看symbol table api时发现php内部整形和字符长之间的装换规则,突然想到了为什么原来将两个字符串用加号连接返回值是0。
比如如下代码:
var_dump("1a" + 2, 1 . "a", "a1" + 5, "a" + "b", "1" + "2", "-1a" + 3);
int(3)
string(2) "1a"
int(5)
int(0)
int(3)
int(2)
从返回结果的类型可以明显看到如果用加号操作符,zend引擎首先会把字符串前面的字符装换成整形,直到第一个非数字字符串为止,这也说明了为什么"a"+"b"=0,因此作为最基础的字符串连接操作,就得选用其他符号作为操作符。