php多维数组去除空元素

<?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"
  }
}

原文链接:
https://www.cnblogs.com/phpshen/p/6027388.html

参考文章地址:
https://www.cnblogs.com/yehuisir/p/13576568.html

猜你喜欢

转载自blog.csdn.net/username666/article/details/109998252