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 相关文章推荐
用Flash图形化数据(二)
Oct 09 PHP
php SQL之where语句生成器
Mar 24 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
PHP远程采集图片详细教程
Jul 01 PHP
PHP版微信公众平台红包API
Apr 02 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
php如何执行非缓冲查询API
Jul 22 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 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
239军机修复记
2021/03/02 无线电
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
require.js的用法详解
2015/10/20 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
实例讲解python函数式编程
2014/06/09 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
Python读写unicode文件的方法
2015/07/10 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Python sorted排序方法如何实现
2020/03/31 Python
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
What is EJB
2016/07/22 面试题
入党积极分子自我鉴定
2014/02/18 职场文书
自荐信的格式
2014/03/10 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
PHP解决高并发问题
2021/04/01 PHP