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 base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php中对2个数组相加的函数
Jun 24 PHP
php实现快速排序法函数代码
Aug 27 PHP
如何用php获取程序执行的时间
Jun 09 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
简单解决微信文章图片防盗链问题
Dec 17 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
js简单抽奖代码
2015/01/16 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
详解Python中类的定义与使用
2017/04/11 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
幼儿园中班教师个人工作总结
2015/02/06 职场文书
MySQL数据库之存储过程 procedure
2022/06/16 MySQL