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的控制语句
Oct 09 PHP
PHP脚本数据库功能详解(中)
Oct 09 PHP
php获取mysql版本的几种方法小结
Mar 25 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
Yii2中Restful API原理实例分析
Jul 25 PHP
php实现的双色球算法示例
Jun 20 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
tp5.1 框架查询表达式用法详解
May 25 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP多个版本的分析解释
2011/07/21 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
详解Python当中的字符串和编码
2015/04/25 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
python中os.remove()用法及注意事项
2021/01/31 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
运动会闭幕式解说词
2014/02/21 职场文书
夜不归宿检讨书
2014/02/25 职场文书
学术会议主持词
2014/03/17 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
个人债务授权委托书
2014/10/17 职场文书
期末复习计划
2015/01/19 职场文书
保安辞职信范文
2015/02/28 职场文书