當前位置: 首頁> 最新文章列表> array_filter() 基本用法詳解

array_filter() 基本用法詳解

M66 2025-05-14

在PHP開發中,數組是非常常用的數據結構。而在操作數組時,我們經常需要對數組進行過濾,比如去除空值、保留滿足某些條件的元素等等。 array_filter()函數就是專門為此而設計的一個非常實用的工具。

本文將詳細講解array_filter()的基本用法、參數含義以及一些常見的使用場景,幫助你快速掌握這個函數的實際應用。

一、array_filter()函數簡介

array_filter()是PHP內置函數之一,它的作用是使用回調函數對數組中的每個元素進行過濾,僅保留返回值為true的元素。它的語法如下:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

參數說明:

  • $array :要過濾的原始數組。

  • $callback (可選):用於判斷是否保留某個元素的回調函數。如果為null ,則默認移除值為falsenull 、空字符串'' 、數字0、空數組[]等“假值”。

  • $mode (PHP 7.4+):指定傳遞給回調函數的內容,是值、鍵,還是鍵值對。

二、基本用法示例

1. 去除數組中的“假值”

這是最常見的使用方式,適用於清理表單數據或配置項等:

 $data = ["apple", "", null, 0, "banana", false];

$filtered = array_filter($data);

print_r($filtered);

輸出結果:

 Array
(
    [0] => apple
    [4] => banana
)

沒有傳入回調函數時, array_filter()默認會移除“假值”。

2. 使用回調函數自定義過濾邏輯

比如我們只保留數組中長度大於5的字符串:

 $words = ["apple", "strawberry", "banana", "kiwi"];

$filtered = array_filter($words, function($word) {
    return strlen($word) > 5;
});

print_r($filtered);

輸出:

 Array
(
    [1] => strawberry
    [2] => banana
)

3. 按照鍵名過濾(使用ARRAY_FILTER_USE_KEY)

從PHP 7.4開始,可以通過第三個參數$mode控製過濾內容:

 $data = [
    'a' => 100,
    'b' => 200,
    'x' => 300,
];

$filtered = array_filter($data, function($key) {
    return $key === 'x';
}, ARRAY_FILTER_USE_KEY);

print_r($filtered);

輸出:

 Array
(
    [x] => 300
)

三、array_filter() 常見應用場景

1. 表單數據清洗

$_POST = [
    'username' => 'alice',
    'email' => '',
    'age' => null,
];

$clean_data = array_filter($_POST);

這樣可以快速去除空值字段,只保留有效數據。

2. 過濾符合某些條件的用戶數據

$users = [
    ['name' => 'Tom', 'active' => true],
    ['name' => 'Jerry', 'active' => false],
    ['name' => 'Spike', 'active' => true],
];

$active_users = array_filter($users, function($user) {
    return $user['active'];
});

print_r($active_users);

3. 動態過濾URL列表中的合法鏈接

$urls = [
    'https://m66.net/home',
    'invalid-url',
    'http://m66.net/contact',
    '',
];

$valid_urls = array_filter($urls, function($url) {
    return filter_var($url, FILTER_VALIDATE_URL);
});

print_r($valid_urls);

四、注意事項

  • 使用array_filter()後,原數組的鍵名不會被重置(如果需要重置,可以配合array_values()使用)。

  • 如果需要按鍵名過濾,請確保PHP版本>= 7.4 並使用ARRAY_FILTER_USE_KEY

  • 回調函數應返回truefalse ,用於判斷該元素是否保留。