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 zlib压缩和解压缩swf文件的代码
Dec 30 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
深入php list()函数的详解
Jun 05 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php获取访问者IP地址汇总
Apr 24 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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实现的MD5结合RSA签名算法实例
2017/10/07 PHP
javascript第一课
2007/02/27 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
Python编写登陆接口的方法
2017/07/10 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
冰淇淋店创业计划书范文
2013/12/27 职场文书
明信片寄语大全
2014/04/08 职场文书
财务会计专业求职信
2014/06/09 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
医院病假条范文
2015/08/17 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL