<?php
/**
* 去除多维数组中的空值
* @author
* @return mixed
* @param $arr 目标数组
* @param array $values 去除的值 默认 去除 '',null,false,0,'0',[]
*/
function filter_array($arr, $values = ['', null, false, 0, '0',[]]) {
foreach ($arr as $k => $v) {
if (is_array($v) && count($v)>0) {
$arr[$k] = filter_array($v, $values);
}
foreach ($values as $value) {
if ($v === $value) {
unset($arr[$k]);
break;
}
}
}
return $arr;
}
$arr = array(
array('name'=>"zhangsan",'age'=>18,'hobby'=>"reading"),
array('name'=>"lisi",'age'=>19,'hobby'=>""),
array()
);
var_dump($arr);
$values = ['', null, false, 0, '0',[]];
var_dump(filter_array($arr, $values));
处理前:
array(3) {
[0]=>
array(3) {
["name"]=>
string(8) "zhangsan"
["age"]=>
int(18)
["hobby"]=>
string(7) "reading"
}
[1]=>
array(3) {
["name"]=>
string(4) "lisi"
["age"]=>
int(19)
["hobby"]=>
string(0) ""
}
[2]=>
array(0) {
}
}
处理后:
array(2) {
[0]=>
array(3) {
["name"]=>
string(8) "zhangsan"
["age"]=>
int(18)
["hobby"]=>
string(7) "reading"
}
[1]=>
array(2) {
["name"]=>
string(4) "lisi"
["age"]=>
int(19)
}
}
如果要删除hobby值为空的数据,可以使用array_filter函数。
/**
* 使用array_filter函数
*/
$arr2 = array_filter($arr, function ($value) {
return !empty($value['hobby']);
});
var_dump($arr2);
效果:
array(1) {
[0]=>
array(3) {
["name"]=>
string(8) "zhangsan"
["age"]=>
int(18)
["hobby"]=>
string(7) "reading"
}
}