PHP5.5和之前的版本empty函数的不同之处
程序员文章站
2023-12-10 23:02:16
作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就sb了。复制代码 代码如下:if(strlen($pass...
作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切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这个函数可以应用于任何值,而不局限于变量。可以为常量、函数返回值等等。
推荐阅读
-
PHP5.5和之前的版本empty函数的不同之处
-
PHP5.5和之前的版本empty函数的不同之处
-
PHP中检查isset()和!empty()函数的必要性
-
PHP中检查isset()和!empty()函数的必要性
-
【PySpark】Spark 2.0系列SparkSession与Spark 2.0之前版本中的SQLContext和HiveContext的联系与区别
-
求兼容PHP5.5和5.6的des加解密函数或类
-
PHP5.5版本之前empty函数的参数只能为变量
-
深入理解PHP中的empty和isset函数,emptyisset_PHP教程
-
PHP5.5版本之前empty函数的参数只能为变量
-
PHP5.5和之前的版本empty函数的不同之处_PHP教程