PHP中echo与print混合使用为何输出异常?代码输出问题问询
关于PHP中echo与print混合使用的常见问题解答
1. 为啥混合用echo和print会跑出意料之外的输出?
其实核心原因是echo和print在PHP里根本不是一类东西,很多人误以为它们是同类型的输出命令,混着用就踩坑了:
- echo 是个语言结构(不是函数),它的作用就单纯是输出内容,干完活啥也不返回;
- print 是个内置函数,它输出完内容后,会固定返回一个值
1。
当你把它们混在一起写的时候,PHP会按照代码的执行优先级来处理,这个优先级很容易被忽略。比如你本来想按顺序输出两段内容,但print返回的1会被echo额外输出,或者执行顺序和你预想的完全反过来,结果自然就不对了。
2. 举个例子解析代码的输出逻辑
拿这段很常见的测试代码来说:
echo "First: ", print "Second";
你可能以为会输出First: Second,但实际结果是SecondFirst: 1。咱一步一步拆解:
- 首先,PHP处理echo的参数列表时,发现里面有个
print "Second"——函数调用的优先级比echo的逗号参数更高,所以会先执行print "Second":- 先输出字符串
Second; - print执行完后,返回固定值
1。
- 先输出字符串
- 这时候echo的参数就变成了
"First: "和1,echo会把这俩内容依次输出,也就是First: 1。 - 把两步的输出拼在一起,就得到了最终的
SecondFirst: 1。
再补个反例:
print echo "Hello";
这段代码直接会报错,因为echo没有返回值,而print作为函数必须要接收一个有效参数,echo给不出,PHP自然就抛出语法错误了。
说白了,只要搞清楚echo和print的本质区别,以及代码的执行顺序,就不会再被这种混合使用的输出搞懵啦。
内容的提问来源于stack exchange,提问作者Leon Aves
相关产品推荐
相关产品推荐

