谁能告诉下面表达式的内部过程?
<?php echo '2' . print(2) + 3; ?>
// outputs 521
print
不是一个函数,所以括号不像你想象的那样工作。它获取表达式(2) + 3
( 5
) 的值并输出它。它返回1
自身,连接到'2'
,然后echo
ed 。
print(2) + 3
将导致 5 (它与print (2 + 3)
or相同print 2+3
。由于在这种情况下 print 实际上不是函数,因此括号几乎没有意义。最后要注意的一件事是print
在echo
.
到目前为止的输出是:5
echo '2' . print
将导致 21 因为 print 总是返回 1
现在的输出是:'521'
回显由以下组成的连接字符串:
字符串 '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.
我强烈建议不要回显打印结果,也不打印回显结果。这样做一开始是非常荒谬的。
首先将 2 和 3 相加,得到 5,即输出。
下一个打印1
总是返回。该返回值与2
get连接,21
然后回显。