当前位置:  编程技术>php

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

    来源: 互联网  发布时间:2014-08-26

    本文导语:  作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就SB了。 代码如下:if(strlen($passwd) < 6 || empty($preg_replace("/d/", "", $passwd))) {    //do something}大致的意思就...

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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php5中当浏览器禁用cookie时保持会话session的方法
  • PHP5的CMS框架 Kajona
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • PHP5 Web开发框架 Probus
  • PHP5的AJAX开发包 AJASON
  • PHP5的MVC框架 TMPHP
  • PHP5的MVC框架 Agavi
  • PHP5的SVG开发包 SVGGraph
  • 在REDHAT 8.0下安装PHP5的问题
  • PHP5调试工具 debugConsole
  • PHP5 重构工具 Rephactor
  • PHP5开发框架 PRADOTM
  • PHP5的ORM框架 dORM iis7站长之家
  • PHP5框架 Linx
  • php5框架 Rong Framework
  • PHP5的ORM框架 dORM
  • PHP5的ORM框架 SQLReactor
  • PHP5框架 nette
  • Resin的PHP5引擎 Quercus
  • 微型 PHP5 框架 Slim Framework
  • 安装php5碰到的怪问题,急~~~~~


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3