我们在日常的项目开发中可能会遇到这样的数组 :
array(1) { [0]=> string(0) “” }
这样的数组你用 isset
, empty
, if
判断的话都是返回 true
。接着一般都会使用 for
, foreach
, while
等函数方法进行循环。所以非常浪费资源有时还会报错。下面我们记录一下函数可以将这种数组过滤掉。
函数名: array_filter()
调用方式:array_filter(array)
参数说明:array 是操作的对象,我们将删除其中的空元素 。
此时如果我们在用 if
去判断这样的数组的时候就会返回 false
了。
代码调用实例:
<?php
$array = array('a' => "abc", 'b' => "bcd",'c' =>"cde",'d' =>"def",'e'=>"");
$b= array_filter($array);
print_r($b);
?>
结果:
Array (
[a] => abc
[b] => bcd
[c] => cde
[d] => def
)
foreach或者while的,利用这两个语法结构来删除数组中的空元素,简单代码如下:
<?php
foreach( $arr as $k => $v){
if( !$v ) unset( $arr[$k] );
}
而且自我感觉还挺不错,只是这样的效率并不高也曾经试过,先将$arr转为对象,然后利用对象的特性来删除,因为:foreach
是将当前操作的数组进
行copy,每操作一下foreach,都是copy了一个变量,页面里面如果有太多的foreach,会是一个很大的消耗。