PHP中echo与print执行顺序异常:输出结果不符预期
问题解析
首先纠正一个误解:echo print('1')的实际输出是11,不是1。因为print('1')会先输出1,然后返回整数1,echo接着输出这个返回值,所以最终是两次输出1连在一起。
回到你的代码echo 'a' . print('2') . 'c';,正确的执行流程是这样的:
- PHP 处理字符串连接时,
.是左结合的,也就是说表达式会被拆解成('a' . print('2')) . 'c'。 - 计算
'a' . print('2')时,必须先拿到print('2')的值:执行print('2')会立即输出2,然后返回1(print始终返回整数1)。 - 接下来
'a' . 1会自动转换成字符串'a1'(整数1被转为字符串'1')。 - 再把
'a1'和'c'连接,得到'a1c'。 - 最后
echo输出'a1c'。
所以正常情况下,最终输出应该是2a1c,和你的预期一致。
你得到2ca1的原因大概率是这两种情况之一:
- 你看错了输出结果,或者在终端/浏览器里的显示顺序出现了混乱;
- 实际运行的代码和你写的不一致(比如把
'a'和'c'的位置写反了,或者多打了符号)。
内容的提问来源于stack exchange,提问作者GrzeGab
相关产品推荐
相关产品推荐

