在PHP 開發過程中,處理數組是非常常見的需求。其中一個典型場景是:我們希望移除數組中布爾值為false的元素,比如false 、 0 、 "" (空字符串)、 null 、空數組等。此時, array_filter()函數就是一個非常好用的工具。
array_filter()是PHP 的內置函數,它的作用是用回調函數對數組中的每個元素進行過濾,返回一個由所有通過回調函數測試的元素組成的新數組。如果不傳回調函數,它將自動移除所有布爾值為false的元素。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$array :要過濾的原始數組
$callback (可選):自定義回調函數
$mode (可選):可以控制傳給回調函數的是鍵還是值或兩者
當我們不傳遞任何回調函數時, array_filter()默認會移除數組中所有等價於false的值。
$data = [
'name' => 'John',
'age' => 0,
'email' => '',
'is_active' => false,
'preferences' => [],
'bio' => null,
'website' => 'https://m66.net/profile/john'
];
$filtered = array_filter($data);
print_r($filtered);
Array
(
[name] => John
[website] => https://m66.net/profile/john
)
如你所見, 0 、 '' 、 false 、 null 、 []都被過濾掉了,只留下布爾值為true的元素。
比如你想只移除false和null ,而保留0和'' ,那就需要自定義回調函數:
$filtered = array_filter($data, function ($value) {
return $value !== false && $value !== null;
});
print_r($filtered);
這樣就可以更精準地控製過濾規則。