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 相关文章推荐
ThinkPHP采用模块和操作分析
Apr 18 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 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传参之传值与传址的区别
2015/04/24 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python之Character string(实例讲解)
2017/09/25 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
django admin组件使用方法详解
2019/07/19 Python
django之自定义软删除Model的方法
2019/08/14 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
python enumerate内置函数用法总结
2020/01/07 Python
Python函数基本使用原理详解
2020/03/19 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
高中生职业生涯规划书
2014/02/24 职场文书
对标管理实施方案
2014/03/12 职场文书
《云房子》教学反思
2014/04/20 职场文书
表扬稿范文
2015/01/17 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书