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'] 這種寫法注定了一個方法只能處理一個數組,如果數組內容發生變化或要求過濾的字段改變就只能重新寫一個方法了,代碼重用性很差,有沒有更好的辦法,大家互相分享一下