回显“1”。 (print '2') + 3;
返回 214。脚本如何以 *14 结尾?
最佳答案
当你这样做的时候
echo "1" . (print '2') + 3;
PHP 会做 ( demo )
line # * op fetch ext return operands
---------------------------------------------------------------------------------
2 0 > PRINT ~0 '2'
1 CONCAT ~1 '1', ~0
2 ADD ~2 ~1, 3
3 ECHO ~2
4 > RETURN 1
言外之意:
- 打印2,返回1
- 将“1”与返回的 1 连接起来 => “11”
- 添加“11”+ 3 => 14
- echo 14
那是 214。
运算符 + - .
等于 Operator Precedence , 但左结合:
For operators of equal precedence, left associativity means that evaluation proceeds from left to right, and right associativity means the opposite.
编辑:因为所有其他答案都声称 PHP 做 1+3,这里进一步证明它不做:
echo "1" . (print '2') + 9;
给出 220,例如11+9 而不是 1 。 (1+9)
。如果加法优先于串联,则应该是 2110,但为此你必须写成
echo "1" . ((print '2') + 9);
关于php - 将 echo 和 print 组合在一个语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213885/