當前位置: 首頁> 最新文章列表> 使用array_filter() 過濾布爾值為false 的元素

使用array_filter() 過濾布爾值為false 的元素

M66 2025-06-05

在PHP 開發過程中,處理數組是非常常見的需求。其中一個典型場景是:我們希望移除數組中布爾值為false的元素,比如false0"" (空字符串)、 null 、空數組等。此時, array_filter()函數就是一個非常好用的工具。

什麼是array_filter()?

array_filter()是PHP 的內置函數,它的作用是用回調函數對數組中的每個元素進行過濾,返回一個由所有通過回調函數測試的元素組成的新數組。如果不傳回調函數,它將自動移除所有布爾值為false的元素。

文法:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $array :要過濾的原始數組

  • $callback (可選):自定義回調函數

  • $mode (可選):可以控制傳給回調函數的是鍵還是值或兩者

示例:移除布爾值為false 的元素

當我們不傳遞任何回調函數時, 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''falsenull[]都被過濾掉了,只留下布爾值為true的元素。

如果你只想過濾掉某些“假值”怎麼辦?

比如你想只移除falsenull ,而保留0'' ,那就需要自定義回調函數:

 $filtered = array_filter($data, function ($value) {
    return $value !== false && $value !== null;
});

print_r($filtered);

這樣就可以更精準地控製過濾規則。