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 相关文章推荐
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
PHP也能干大事 随机函数
Apr 14 PHP
php bootstrap实现简单登录
Mar 08 PHP
Yii2中DropDownList简单用法示例
Jul 18 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
解决php写入数据库乱码的问题
Sep 17 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 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
几种显示数据的方法的比较
2006/10/09 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python with用法实例
2015/04/14 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python绘制动态水球图过程详解
2020/06/03 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
什么是网络协议
2016/04/07 面试题
工程造价自荐信
2013/10/09 职场文书
区三好学生主要事迹
2014/01/30 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
详解Vue slot插槽
2021/11/20 Vue.js
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
基于docker安装zabbix的详细教程
2022/06/05 Servers