PHP5.5和之前的版本empty函数的不同之处
作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切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使用递归与迭代实现快速排序示例
复制代码 代码如下: /** * 递归法实现的快速排序 * @param $seq * @return array */function quicksort($seq){ if (count($seq) > 1) { $k = $seq[0]; $x = array(); $y = array(); $_size = count($seq); //do not use count($seq) in loop for. f
-
php5.5新数组函数array_column使用
PHP5.5发布了,其中增加了一个新的数组函数array_column,感觉不错的!但是低版本PHP要使用,得自己实现:参考地址:https://wiki.php.net/rfc/array_column 复制代码 代码如下: if(!function_exists('array_column')){ function array_column($input, $columnKey, $indexKey=null){ $columnKeyIsNumber = (
-
PHP5.5迭代生成器用法实例详解
本文实例讲述了PHP5.5迭代生成器用法.分享给大家供大家参考,具体如下: PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP的一个新特性,这跟python3中的迭代生成器类似,看看PHP5.5的迭代生成器如何定义. <?php function xrange($start, $end, $step = 1) { for ($i = $start; $i <= $end; $i += $step) { yield $i; } } foreach (xrang
-
php5.5中类级别的常量使用介绍
不久前php刚发布了5.5的第一个稳定版,介绍了一个类级别的常量,名字是 `CLASS` 这个常量对所有的类有效,返回类的全名. 复制代码 代码如下: <?php namespace vendorpackage; class Foo { // ... } var_dump(Foo::CLASS); //上面脚本输出 string(18) "vendorpackageFoo". 为什么要使用它 我们为什么要使用一个这样的常量,当然不是像上面那个例子一样只是获得类的全名.我们
-
PHP迭代器实现斐波纳契数列的函数
复制代码 代码如下: class Fibonacci implements Iterator { private $previous = 1; private $current = 0; private $key = 0; public function current() { return $this->current; } public function key() { return $this->key; } pub
-
php可应用于面包屑导航的迭代寻找家谱树实现方法
本文实例讲述了php可应用于面包屑导航的迭代寻找家谱树实现方法.分享给大家供大家参考.具体实现方法如下: <?php echo "<pre>"; $area = array( array('id'=>1,'area'=>'北京','pid'=>0), array('id'=>2,'area'=>'广西','pid'=>0), array('id'=>3,'area'=>'广东','pid'=>0), array('
-
如何把php5.3版本升级到php5.4或者php5.5
今天我们这篇php的技术文章主要为各位朋友们介绍如何使用yum进行安装php的5.4或者5.5版本.当然我们使用centos6.5作为我们的测试机器.其实非常简单,只要下面的两个命令就可以轻松的进行安装php的5.4版本了. 复制代码 代码如下: yum remove php php-bcmath php-cli php-common php-devel php-fpm php-gd php-imap php-ldap php-mbstring php-mcrypt php-mysql ph
-
PHP设计模式之迭代器模式的深入解析
迭代器(Iterator)模式,它在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代.迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之上迭代. 在对象的世界里,迭代器模式要维持类似数组的功能,看作是一个非侵入性对象刻面(facet),Client类往往分离自真实对象实现,指iterator接口.只要有可能,我们可以给迭代器传送一个引用,代替将来可能发生变化的具体或抽象类.参与者:◆客户端(Client):引用迭代器模式的方法在一组
-
PHP5.5在windows安装使用memcached服务端的方法
PHP5.5 在windows下安装 memcached 的方法 下载服务端资源 http://download.csdn.net/detail/zsjangel/7104727 下载完成后,解压(我用的是 64位的,32位版本的我没有尝试过,应该没有问题),进入 DOS 命令行 先 cd 到解压后的目录 然后执行服务注册命令 memcached.exe -d install 卸载服务命令memcached.exe -d uninstall 然后启动服务memcached.exe -d star
-
PHP迭代器的内部执行过程详解
复制代码 代码如下: class myIterator implements Iterator { private $position = 0; private $array = array( "first_element", "second_element", "last_element", ); public function __construct() { $this
随机推荐
- Laravel学习教程之request validation的编写
- MySQL的LEFT JOIN表连接的进阶学习教程
- Vbscript生成Excel报表的常用操作总结
- spring boot(一)之入门篇
- SpringBoot创建JSP登录页面功能实例代码
- 脚本div实现拖放功能(两种)
- node.js中使用Export和Import的方法
- IIS应用程序池自动停止 关闭 假死 处理集锦
- Python函数式编程指南(一):函数式编程概述
- 使MySQL查询区分大小写的实现方法
- 使用javascript实现json数据以csv格式下载
- 深入学习 JavaScript中的函数调用
- javascript函数特点实例分析
- 修改服务器3389远程登陆端口
- 详解C语言编程中的函数指针以及函数回调
- android 电话状态监听(来电和去电)实现代码
- 网站生成静态页面攻略2:数据采集
- Java高级之虚拟机加载机制的实例讲解
- Vue路由切换时的左滑和右滑效果示例
- PHP实现带进度条的Ajax文件上传功能示例
