php 去除多维数组空值,PHP去除(多维)数组中的空数组

本文介绍了一个PHP函数,用于递归地从多维数组中移除所有空元素,并使用array_filter确保最终数组不含任何空数组。通过修改原始代码,实现了更彻底的数组清理。

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍‌​‌​‌‌‌‌‍‌​‌‌​‌‌‌‍‌​‌​‌‌‌‌‍​‌​‌‌​​​‌​​​‌​​‍​‌‌​‌​​‌‌​​‌‌​‌‌‍‌‌​‌​‌‌‌‍​‌​​‌‌​‌‌‌​​‌​‌‍​​​​​​‌​​​​‌​‌‌‍‌‌​‌​‌‌​‍​​‌‌​‌​‌​​​‌‌‌‌‍​​​​​​‌​​‌‌‌​‌‌‍​‌‌​​​‌‌‌​‌​​‌​‍​​​‌​​‌​‌‌‌‌​‌‌‍​​​​‌​‌‌​​​​‌​‌‍​​‌‌​‌​‌​​​‌‌‌‌‍​​​​​​‌​​‌‌‌​‌‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​​​‌‌‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌​​‌​​​​‍‌​​‌‌​‌‌‍‌​​‌‌‌‌​‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​​‌‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​​‌​​​‍‌​​​​‌‌‌‍‌​​‌‌​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​​‍‌‌​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​‌​​​‌‌‍‌‌​​‌​‌‌‍‌‌​​‌‌​​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

先贴上原代码(原文链接):function array_no_empty($arr) {

if (is_array($arr)) {

foreach ( $arr as $k => $v ) {

if (empty($v)) unset($arr[$k]);

elseif (is_array($v)) {

$arr[$k] = array_no_empty($v);

}

}

}

return $arr;

}

确实确实可以去除空数组,但对于多维数组还是清理得不够干净,如下:array(5) {

[1]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg02.jpg"

}

[2]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg10.jpg"

}

[3]=>

array(1) {

["src"]=>

string(0) ""

}

[4]=>

array(1) {

["src"]=>

string(0) ""

}

[5]=>

array(1) {

["src"]=>

string(0) ""

}

}

清理后的结果如下:array(5) {

[1]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg02.jpg"

}

[2]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg10.jpg"

}

[3]=>

array(0) {

}

[4]=>

array(0) {

}

[5]=>

array(0) {

}

}

故修改代码如下:function array_no_empty($arr) {

if (is_array($arr)) {

foreach ( $arr as $k => $v ) {

if (empty($v)){

unset($arr[$k]);

} elseif (is_array($v)) {

$arr[$k] = array_no_empty($v);

}

}

}

return array_filter($arr);

}

清理结果如下:array(2) {

[1]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg02.jpg"

}

[2]=>

array(1) {

["src"]=>

string(51) "http://wp.com/wp-content/uploads/2019/12/x_bg10.jpg"

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值