<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="说明PHP5.5和之前的版本empty函数的区别" id="card1">
<p> 游客</p><p>
标题:说明PHP5.5和之前的版本empty函数的区别<br/>
正文:<br/>
作为我最喜欢使用的函数之一，今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码，本地测试一切ok，到服务器上就SB了。代码如下:if(strlen($passwd) &amp;lt; 6 || empty($preg_replace(&quot;/\d/&quot;, &quot;&quot;, $passwd))) {<br/>    //do something<br/>}<br/>大致的意思就是，密码必须大于6位切不能只由数字组成。找遍服务器日志，发现如下错误：代码如下:PHP Fatal error: Can't use function return value in write context in /xxx/xxx/camnpr.php on line xxxgoogle了一下，大概是说，empty的参数不能为函数。我靠，本地明明是好的。看了下本地的PHP是5.5的，服务器是5.3的。难道这函数在2个版本之间就进化了么？找遍了PHP官方的文档没有发现任何端倪，然后google狂搜，不小心点到了PHP英文文档界面，在empty函数的介绍下面，发现了一行小字:代码如下:Note:<br/>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。任何非变量形式的参数都是导致这个函数报错。<br/>2.PHP 5.5这个函数可以应用于任何值，而不局限于变量。可以为常量、函数返回值等等。<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1559&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1559&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1559&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1559">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1559">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>