有人可以告诉下面表达式的内部程序吗?
<?php echo '2' . print(2) + 3; ?>
// outputs 521
答案 0 :(得分:16)
print
不是函数,因此括号不能按您的意思工作。它取表达式(2) + 3
(5
)的值并输出它。它返回1
本身,连接到'2'
,然后echo
编辑。
答案 1 :(得分:7)
print(2) + 3
将导致5(它与print (2 + 3)
或print 2+3
相同。由于print在这种情况下实际上不是函数,因此括号几乎没有意义。最后一件事需要注意的是,print
会在echo
之前进行评估。
目前的输出是:5
echo '2' . print
将导致21因为print总是返回1
现在的输出是:'521'
答案 2 :(得分:6)
回显由以下内容组成的串联字符串:
字符串'2' 函数print('2')的结果将返回true,并将其字符串化为1 字符串'3'
现在,这里的操作顺序真的很有趣,根本不能以521结束!让我们尝试一个变体来弄清楚出了什么问题。
echo'2'.print(2)+ 3; 这产生521
PHP正在解析那个:
回声'2'。 (打印('2')+'3')) 答对了!左边的打印首先进行评估,打印'5',离开我们 回声'1'。打印( '2') 然后左侧打印得到评估,所以我们现在打印'52',留下我们 回声'1'。 '1'; 成功。 521。我强烈建议不要回复打印结果,也不要打印回声的结果。这样做是非常荒谬的。
答案 3 :(得分:3)
首先添加2和3,结果为5,输出。
下一次打印总是返回1
。该返回值与2
连接,以获得21
,然后回显。