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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
用PHP发电子邮件
Oct 09 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
实用函数3
Nov 08 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php正则匹配html中带class的div并选取其中内容的方法
Jan 13 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
深入浅析PHP无限极分类的案例教程
May 09 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/06/17 PHP
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python中while和for的区别总结
2019/06/28 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
化学相关工作求职信
2013/10/02 职场文书
美术教学感言
2014/02/22 职场文书
借款协议书
2014/04/12 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
企业宣传口号
2014/06/12 职场文书
项目申请汇报材料
2014/08/16 职场文书
消防安全月活动总结
2015/05/08 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
sql中mod()函数取余数的用法
2021/05/29 SQL Server