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 相关文章推荐
php smarty模版引擎中的缓存应用
Dec 11 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
PHP页面中文乱码分析
Oct 29 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
php文件上传类的分享
Jul 06 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
php更新cookie内容的详细方法
Sep 30 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
NOT NULL 和NULL
2007/01/15 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
简单的JS多重继承示例
2008/03/13 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
Javascript Object.extend
2010/05/18 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
学校花圃的标语
2014/06/18 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
自荐信格式模板
2015/03/27 职场文书
教师聘用意向书
2015/05/11 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers