为什么“回音'2'。打印(2)+ 3”打印521?

时间:2012-11-01 11:25:52

标签: php

有人可以告诉下面表达式的内部程序吗?

<?php echo '2' . print(2) + 3; ?>
// outputs 521

4 个答案:

答案 0 :(得分:16)

print不是函数,因此括号不能按您的意思工作。它取表达式(2) + 35)的值并输出它。它返回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,然后回显。