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

2015-01-24信息快讯网

这篇文章主要介绍了PHP5.5和之前的版本empty函数的不同之处,开发时需要注意,假如你的本地开发PHP版本是PHP5.5以上,而服务器低于PHP5.5,更要注意这个问题,需要的朋友可以参考下

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

推荐一款MAC OS X 下php集成开发环境mamp
php使用fgetcsv读取csv文件出现乱码的解决方法
php中file_get_contents与curl性能比较分析
PHP中使用循环实现的金字塔图形
php调用新浪短链接API的方法
PHP使用feof()函数读文件的方法
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
php函数serialize()与unserialize()用法实例
php的dl函数用法实例
CI框架验证码CAPTCHA辅助函数用法实例
php中strstr、strrchr、substr、stristr四个函数的区别总结
PHP中exec函数和shell_exec函数的区别
ThinkPHP模板判断输出Empty标签用法详解
php中eval函数的危害与正确禁用方法
PHP实现单例模式最安全的做法
PHP输出英文时间日期的安全方法(RFC 1123格式)
PHP中多维数组的foreach遍历示例
PHP根据传来的16进制颜色代码自动改变背景颜色
php smarty truncate UTF8乱码问题解决办法
PHP根据传入参数合并多个JS和CSS文件的简单实现
codeigniter数据库操作函数汇总
使用PHP函数scandir排除特定目录
PHP图片等比例缩放生成缩略图函数分享
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
IIS6.0 开启Gzip方法及PHP Gzip函数分享
PHP is_subclass_of函数的一个BUG和解决方法
php5.2以下版本无json_decode函数的解决方法
php中curl、fsocket、file_get_content三个函数的使用比较
php setcookie函数的参数说明及其用法
php警告Creating default object from empty value 问题的解决方法
php初始化对象和析构函数的简单实例
PHP empty函数报错解决办法
©2014-2024 dbsqp.com