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入门
Jan 04 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
php学习笔记之面向对象编程
Dec 29 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
党员教师工作决心书
2014/03/13 职场文书
大学生评语大全
2014/04/18 职场文书
机械工程师岗位职责
2014/06/16 职场文书
语文课外活动总结
2014/08/27 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
2015初中团委工作总结
2015/07/28 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
mysql主从复制的实现步骤
2021/10/24 MySQL