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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
php中isset与empty函数的困惑与用法分析
Jul 05 PHP
Yii框架自定义数据库操作组件示例
Nov 11 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中var_export与var_dump的区别分析
2010/08/21 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
理解javascript对象继承
2016/04/17 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
JS随机密码生成算法
2019/09/23 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
django最快程序开发流程详解
2019/07/19 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
元旦晚会邀请函
2014/01/27 职场文书
高三体育教学反思
2014/01/29 职场文书
通用自荐信范文
2014/03/14 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle