PHP: empty的陷阱

错误代码如下:

//empty()的参数值是函数
if (empty(trim($name))) {
    //[TODO]
}
//empty()的参数值是表达式
if (empty($var = trim($name))) {
    //[TODO]
}

报错信息如下:

Fatal error: Can't use function return value in write context in ...

引用PHP手册:

Note:
在PHP 5.5之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。
换言之,下列代码不会生效: empty(trim($name))。 
作为替代,应该使用trim($name) == false. 

PS:

在PHP 5.5之后,运行时不报错,但若提交至SVN仍会报错(GIT未试验)

正确代码如下:

//变量赋值法
$var = trim($name);
if (empty($var)) {
    //[TODO]
}
//作为替代法
if (trim($name) == false) {
    //[TODO]
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,029评论 25 709
  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,760评论 7 118
  • 想用美好的文字把心中的开心纪录 10份一定是一个美好的月份 从未想到相恋半年的猴子要成为人妻 一切来的太突然 我立...
    君君的小窝阅读 315评论 0 0
  • 近日,随着懂你英语课程难度的加深,我的学习速度也慢了下来,需要更多时间去复习消化所学的内容,渐渐感觉有些...
    瞳小甜Rosie阅读 289评论 0 0
  • 早上学了 price list和error recording的vlookup 中午和西西聊天发现了我们之间一些共...
    角落蜷缩阅读 252评论 0 0