PHP的print

有这样的一题:

echo ‘2’.print(2)+3;

问输出是多少?

运行结果是……(下面有分析过程及答案,提前预告:正确答案不是224,此题并不涉及运算符优先级https://secure.php.net/manual/en/language.operators.precedence.php

print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。

print(2) <=> print 2

print (2)+3 <=> print 2+3

所以 echo ‘2’.print(2)+3;  ==> print 2+3先输出5,echo ‘2’.1 输出“21”,所以整体输出521 。

 

类似的情况

echo ‘2’.print(2)+3; //521

echo ‘4’.print(2)+3+1*7; //1241

echo ‘1’.print(2)+3+1*7,33; //121133 注意:逗号会分隔print的参数作用范围