你的语句解析对人类如下。
回显由以下内容组成的串联字符串:
- 函数的结果
print('3')
,这将返回 true,它被字符串化为1
- 字符串“2”
- 函数的结果
print('4')
,这将返回 true,它被字符串化为1
现在,这里的操作顺序真的很有趣,不能以43211
根本!让我们尝试一个变体来找出问题所在。
echo '1' . print('2') . '3' . print('4') . '5';
这产生4523111
PHP 将其解析为:
echo '1' . (print('2' . '3')) . (print('4' . '5'));
答对了!这print
左边首先被评估,打印'45'
,这让我们
echo '1' . (print('2' . '3')) . '1';
然后是左边print
得到评估,所以我们现在已经打印了'4523'
,留给我们
echo '1' . '1' . '1';
成功。4523111
.
让我们来分析一下你的奇怪说法。
echo print('3') . '2' . print('4');
这将打印'4'
首先,留给我们
echo print('3' . '2' . '1');
然后评估下一个打印语句,这意味着我们现在已经打印了'4321'
,留给我们
echo '1';
Thus, 43211
.
我强烈建议不要echo
计算 a 的结果print
, nor print
荷兰国际集团的结果echo
。这样做一开始就是非常荒谬的。
经过进一步审查,我实际上并不完全确定 PHP 是如何解析这些废话的。我不想再想了,这让我的大脑很受伤。