PHP5.5和之前的版本empty函数的不同之处
发布时间:2020-12-12 20:14:13 所属栏目:PHP教程 来源:网络整理
导读:作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就SB了。 代码如下: if(strlen($passwd) //do something } 大致的意思就是,密码必须大于6位切不能只由数字组成。找遍服务器日志,发现如
作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切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。任何非变量形式的参数都是导致这个函数报错。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |