php5.5和之前的版本empty函数的不同之处
来源: 阅读:1207 次 日期:2014-07-31 11:28:34
温馨提示: 小编为您整理了“php5.5和之前的版本empty函数的不同之处”,方便广大网友查阅!

作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就sb了。

代码如下:

if(strlen($passwd) < 6 || empty($preg_replace(/\d/, , $passwd))) {

    //do something

}

大致的意思就是,密码必须大于6位切不能只由数字组成。找遍服务器日志,发现如下错误:

代码如下:

php fatal error: can't use function return value in write context in /xxx/xxx/xx.php on line xxx

google了一下,大概是说,empty的参数不能为函数。我靠,本地明明是好的。看了下本地的php是5.5的,服务器是5.3的。难道这函数在2个版本之间就进化了么?找遍了php官方的文档没有发现任何端倪,然后google狂搜,不小心点到了php英文文档界面,在empty函数的介绍下面,发现了一行小字:

代码如下:

note:

prior to php 5.5, empty() only supports variables; anything else will result in a parse error. in other words, the following will not work: empty(trim($name)). instead, use trim($name) == false.

恶魔啊,不带这么坑中文用户的。总结下empty函数的使用场景:

1.php 5.5之前的版本,这个函数是用来检查变量的赋值是否为0, false, 空字符串, null。任何非变量形式的参数都是导致这个函数报错。

2.php 5.5这个函数可以应用于任何值,而不局限于变量。可以为常量、函数返回值等等。

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map