PHP: empty的陷阱

2017-03-28  本文已影响0人  zhang_xinglong

错误代码如下:

//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]
}
上一篇 下一篇

猜你喜欢

热点阅读