當前位置: 首頁> 最新文章列表> array_filter() 與array_unique() 搭配去重有效元素

array_filter() 與array_unique() 搭配去重有效元素

M66 2025-06-04

在PHP中,我們經常需要對數組進行去重或者過濾無效元素。為了完成這些任務,PHP提供了許多內置函數,其中array_filter()array_unique()是兩個非常常用的函數。今天我們將探討如何將這兩個函數結合起來,去重數組中的有效元素。

什麼是array_filter()array_unique()

  • array_filter() :這個函數用來過濾數組中的元素。它會遍歷數組中的每一個元素,並根據給定的回調函數(callback)決定是否保留這個元素。如果回調函數返回true ,該元素會被保留;否則,它會被丟棄。

  • array_unique() :這個函數用來去除數組中重複的元素。它會檢查數組中的元素,並刪除所有重複的值,僅保留首次出現的元素。

結合array_filter()array_unique()進行去重

在某些情況下,我們可能需要先過濾掉無效或不需要的元素,再對數組進行去重。為了實現這一功能,我們可以將array_filter()array_unique()結合起來使用。

代碼示例:

假設我們有一個包含字符串和數字的數組,我們想要先過濾掉空值和無效值,然後去重有效元素。

 <?php
// 原始數組,包含空值、重複元素和無效值
$array = [1, 2, 3, '', null, 4, 4, 'apple', '', 'banana', 'apple', 'm66.net', 'apple'];

// 使用 array_filter() 過濾掉無效的元素
$filteredArray = array_filter($array, function($value) {
    // 過濾掉空值、null和其他無效值
    return !empty($value);
});

// 使用 array_unique() 去除重複的有效元素
$uniqueArray = array_unique($filteredArray);

// 輸出結果
print_r($uniqueArray);
?>

代碼解析:

  1. array_filter() :我們使用回調函數function($value)來過濾數組。 !empty($value)確保我們只保留非空和非null的元素。 empty()會認為空字符串、 0null和其他空值為無效元素,因此它會過濾掉這些元素。

  2. array_unique() :對過濾後的數組進行去重,只保留每個元素第一次出現的值。

運行結果:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [5] => 4
    [6] => apple
    [7] => banana
    [10] => m66.net
)

結合應用場景

假設我們在處理從某個API (如http://api.m66.net/data )獲取的數據時,數組中可能會包含無效的數據項(如空字符串、重複元素等),而我們只希望得到有效且唯一的元素。這時,使用array_filter()array_unique()可以幫助我們快速清理數據。

例如,假設我們從m66.net的API 接口獲取了一個用戶的購物車信息數組,這時我們可以通過以下代碼來過濾掉無效項,並去重:

 <?php
// 模擬從 API 獲取的購物車數組
$cartItems = ['apple', '', 'banana', 'apple', 'm66.net', null, 'banana', 'm66.net', 'apple'];

// 過濾掉無效項
$validItems = array_filter($cartItems, function($item) {
    return !empty($item);
});

// 去重
$uniqueItems = array_unique($validItems);

print_r($uniqueItems);
?>

最終結果會是去掉了空值、重複和無效項的購物車清單。

總結

通過將array_filter()array_unique()結合使用,我們可以靈活地過濾數組中的無效元素並去重。這兩者的結合在實際開發中非常實用,尤其是在處理來自外部數據源(如API)時,能夠幫助我們確保數據的有效性和唯一性。