PHP5.5和之前的版本empty函数的不同之处
2014-06-13 10:48
861 查看
作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切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函数的不同之处
- PHP现在推出5.3.0版本了,不过下载的时候有几个不同版本选择。那就是VC6 X86和VC9 X86。
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- Mac下通过 brew 安装不同版本的php
- 用phpinfo( )打印出来的php版本和在服务器上用php -v打印出来的版本不同的原因
- 服务器迁移php版本不同可能诱发的问题
- PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
- 不同版本PHP之间cURL的区别
- php面向对象(OOP)—不同php版本构造方法的继承和兼容
- pathinfo()在php不同版本中对于对多字节字符处理的不同结果
- mac下如何安装不同的php版本以及如何进行切换
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- PHP不同版本性能测试
- Php版本不同版本比较
- 使用Docker解决同一服务器运行不同版本PHP方案。
- Mac下通过 brew 安装不同版本的php
- 如何将简单CMS后台管理系统示例转换为Java、Php等不同后台语言的版本
- 为apache指定不同版本的PHP
- 服务器迁移,php版本不同可能导致的问题
- 不同php版本中VC6与VC9,Thread Safety与None-Thread Safe,Apache module与fastcgi的区别与选择