PHP删除数组中空值的方法介绍


Posted in PHP onApril 14, 2014

说来惭愧,以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下:

<?php   
foreach( $arr as $k=>$v){   
    if( !$v )   
        unset( $arr[$k] );   
}   
?>

而且自我感觉还挺不错,只是这样的效率并不高也曾经试过,先将$arr转为对象,然后利用对象的特性来删除,因为:foreach是将当前操作的数组进行copy,每操作一下foreach,都是copy了一个变量,页面里面如果有太多的foreach,会是一个很大的消耗。

在网上闲逛的时候,看到人有提示用array_filter,觉得很吃惊。打开手册瞅了一下,发现自己一直就守着个宝山却不知道如何使用。

array_filter函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理,却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目。

<?php   $entry = array(   
             0 => 'foo',   
             1 => false,   
             2 => -1,   
             3 => null,   
             4 => ''  
          );   
print_r(array_filter($entry));   
?>

输出值为:
Array   
(   
    [0] => foo   
    [2] => -1   
) 

看来,以后还是要多看手册啊……就象array_slice一样也是个好东西。可惜以前从来没有注意过。

附:另一个例子

$strDelCodes = "A;B;;C;;C;D;;;D;D";
$rsArray = array_values (array_unique (array_diff (split (";", $strDelCodes), array (""))));

数组$rsArray中存的值为:A B C D

array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。

array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。

array_unique() 函数移除数组中的重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

返回的数组中键名不变。

array_merge() 函数把两个或多个数组合并为一个数组。

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

PHP 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 PHP
php中apc缓存使用示例
Dec 25 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
PHP7常量数组用法分析
Sep 26 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 #PHP
thinkphp实现数组分页示例
Apr 13 #PHP
不使用php api函数实现数组的交换排序示例
Apr 13 #PHP
php读取大文件示例分享(文件操作类)
Apr 13 #PHP
php使用smtp发送支持附件的邮件示例
Apr 13 #PHP
php实现上传图片生成缩略图示例
Apr 13 #PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 #PHP
You might like
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
python函数装饰器用法实例详解
2015/06/04 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
python文件读取失败怎么处理
2020/06/23 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
python中操作文件的模块的方法总结
2021/02/04 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
文员个人求职自荐信
2013/09/21 职场文书
教师应聘个人求职信
2013/12/10 职场文书
初中英语教学随笔
2015/08/15 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL