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模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
学习PHP session的传递方式
Jun 15 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
常用的javascript设计模式
2017/01/11 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python实现飞机大战小游戏
2019/11/08 Python
python爬虫 requests-html的使用
2020/11/30 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
个人求职信范例
2014/01/29 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
网络管理员岗位职责
2014/03/17 职场文书
战友聚会策划方案
2014/06/13 职场文书
信用卡工资证明格式
2014/09/13 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
小学优秀教师材料
2014/12/15 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
后备干部推荐材料
2014/12/24 职场文书
先进班集体事迹材料
2014/12/25 职场文书
安全主题班会教案
2015/08/12 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle