03
2018
11

php中的echo

在群里看到有个人问,如下代码为什么有语法错误:

  false || echo 'xxxx';

常见的用法是false || die('xxxx'),用了echo就提示错误,估计也是这种写法没见着的原因。那为什么这个代码有问题呢?

首先看短路代码的写法。expression1 || expression2基本上等同于:

  if (expression1) {
    expression2;
  }

这种写法很常见,所以没啥问题。

接下来如果把echo改成print系列, var_dump等函数,不会报语法错误。即使换成system, exec等函数,也不会有问题。最开始还以为和函数的返回值类型有关,后来一想php是弱类型语言,php7以下版本的返回值类型在运行时才能确定,应该不是这个问题。

经过以上分析,那最终确定问题出在了echo身上了。于是打开了官方文档,找到了一段文字:

这段话的意思是我们常用的echo不是函数,是个奇行种,调用的时候不需要用括号,但是不能用在函数的上下文中。顺带官方还给出了一个不能使用echo的例子:

// Because echo does not behave like a function, the following code is invalid.
($some_var) ? echo ‘true’ : echo ‘false’;

上述的三目运算符例子中,echo不是函数,所以用在需要计算表达式真假值的上下文就有问题。这也是短路逻辑表达式中不能使用echo的原因。

这个坑可以说是PHP不规范的表现,当然也是基础知识不牢固了^_~

原文链接:https://www.qiquanji.com/post/4821.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。