php对数组的操作已经很完善了,提供给我们很多内置函数用以操作数组,其实可以用array_filter函数对PHP数组中的控制进行过滤
array_filter() 函数用回调函数过滤数组中的值。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变
其中有个小关键点:If no callback is supplied, all entries of input equal to FALSE (see converting to boolean) will be removed. 如果没有给出回调函数,所有的等于 FALSE 的元素将会被移除掉,我们可以轻松的利用这个函数去除一维数组中的空值
$array = [
0 => '啦啦啦啦',
1 => 123,
2 => false,
3 => 'www.tongzhuo100.com',
4 => null,
5 => '',
];
print_r(array_filter($array));
结果为:
Array
(
[0] => 啦啦啦啦
[1] => 123
[3] => www.tongzhuo100.com
)
同时我们也可以利用array_filter() 去除二维数组中的空值
$array = [
['name'=>'asd'],
['name'=>''],
['name'=>'asd'],
['name'=>''],
];
$array = array_filter($array, function ($v) {
return $v['name'];
});
print_r($array);
结果为:
Array
(
[0] => Array
(
[name] => asd
)
[2] => Array
(
[name] => asd
)
)
但个人觉得此方法还是有一个缺陷,就是 $v['name'] 这种写法注定了一个方法只能处理一个数组,如果数组内容发生变化或要求过滤的字段改变就只能重新写一个方法了,代码重用性很差,有没有更好的办法,大家互相分享一下