假设以下代码:
<?php
echo 'hello' . print 123;
已执行。
我期望的是hello123
,但实际输出为123hello1
。
为什么123先来?为什么输出结尾包含1
?
(我还尝试在hello
周围加上一对括号,但结果仍然相同。)
答案 0 :(得分:11)
echo 'hello' . print 123;
这会将'hello'
与print 123
的返回值连接起来。在print
返回值1
之前,输出 123
。之后由hello1
连接echo
输出。所以评估是:
123
1
'hello'
和1
hello1
。答案 1 :(得分:2)
答案 2 :(得分:1)
print的返回值始终为 1 。
您的代码有一个连接点字符:
'hello' . print 123;
所以在连接之前评估所有部分:
然后echo显示评估的字符串:
echo 'hello'.'1' // '1' is the return value of print
字符串上打印的最后一个字符串是123hello1
。
答案 3 :(得分:0)
为什么123先出现? 可能是因为首先执行了print语句并打印了&#39; 123&#39;正如它应该。
为什么输出结尾包含1? 因为&#39; print&#39;返回1,你的echo语句回显&#39; 1&#39;