18

谁能告诉下面表达式的内部过程?

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

4 回答 4

17

print不是一个函数,所以括号不像你想象的那样工作。它获取表达式(2) + 3( 5) 的值并输出它。它返回1自身,连接到'2',然后echoed 。

于 2012-11-01T11:29:27.580 回答
7

print(2) + 3将导致 5 (它与print (2 + 3)or相同print 2+3。由于在这种情况下 print 实际上不是函数,因此括号几乎没有意义。最后要注意的一件事是printecho.

到目前为止的输出是:5

echo '2' . print将导致 21 因为 print 总是返回 1

现在的输出是:'521'

于 2012-11-01T11:31:53.350 回答
6

回显由以下组成的连接字符串:

字符串 '2' 函数 print('2') 的结果,返回 true,字符串化为 1 字符串 '3'

现在,这里的操作顺序真的很有趣,根本不能以 521 结尾!让我们尝试一个变体来找出问题所在。

回声'2'.print(2) + 3; 这产生 521

PHP 将其解析为:

回声“2”。(print('2') + '3')) 宾果游戏!左边的打印首先被评估,打印“5”,这让我们

回声“1”。print('2') 然后左边的 print 被评估,所以我们现在打印了 '52',剩下的就是

回声“1”。'1' ; 成功。521.

我强烈建议不要回显打印结果,也不打印回显结果。这样做一开始是非常荒谬的。

于 2012-11-01T11:43:17.417 回答
3

首先将 2 和 3 相加,得到 5,即输出。

下一个打印1总是返回。该返回值与2get连接,21然后回显。

于 2012-11-01T11:30:07.340 回答