PHP5.5和之前的版本empty函数的不同之处


Posted in PHP onJune 13, 2014

作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切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这个函数可以应用于任何值,而不局限于变量。可以为常量、函数返回值等等。

PHP 相关文章推荐
php fckeditor 调用的函数
Jun 21 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
PHP快速推送微信模板消息
Apr 14 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
使用ThinkPHP生成缩略图及显示
Apr 27 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 #PHP
PHP中多维数组的foreach遍历示例
Jun 13 #PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 #PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 #PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 #PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 #PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 #PHP
You might like
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
PHP经典面试题集锦
2015/03/19 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
详解Python中find()方法的使用
2015/05/18 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
周年庆促销方案
2014/03/15 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
创业女性典型材料
2014/05/02 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
商场父亲节活动方案
2014/08/27 职场文书
名人演讲稿范文
2014/09/16 职场文书
端午节活动总结报告
2015/02/11 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang