首頁 > 後端開發 > PHP問題 > 聊聊php數組去重的常用方法

聊聊php數組去重的常用方法

PHPz
發布: 2023-04-19 14:04:56
原創
598 人瀏覽過

在PHP中,陣列去重是一個常見的操作。因為數組中有可能會存在重複的元素,而去重操作可以使我們清楚地獲取這個數組中的所有不同的元素。下面我將介紹一些常用的陣列去重的方法。

1.使用array_unique函數

array_unique函數是PHP自帶的一步去重函數。它的作用是去除數組中的重複值,並傳回一個新數組。

範例程式碼:

$array = array('apple', 'orange', 'banana', 'apple', 'orange');
$new_array = array_unique($array);
print_r($new_array);
登入後複製

輸出結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
)
登入後複製
登入後複製
登入後複製
登入後複製

2.使用循環遍歷

除了array_unique函數之外,我們還可以使用循環遍歷的方法來實現數組去重。具體實作方法是先建立一個空數組,然後再循環遍歷原始數組中的元素,判斷是否已經在新數組中出現過,如果沒有則把該元素加入到新數組中。最後回傳這個新數組即可。

範例程式碼:

$array = array('apple', 'orange', 'banana', 'apple', 'orange');
$new_array = array();
foreach($array as $value){
    if(!in_array($value, $new_array)){
        $new_array[] = $value;
    }
}
print_r($new_array);
登入後複製

輸出結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
)
登入後複製
登入後複製
登入後複製
登入後複製

3.使用array_flip和array_keys函數

另一種方法是使用array_flip和array_keys函數。 array_flip函數可以將數組中的鍵和值反轉,而array_keys函數則可以傳回數組中所有鍵的列表。因此,我們可以先使用array_flip函數將值作為鍵,然後使用array_keys函數取得這些鍵,最後得到的就是去重後的陣列。

範例程式碼:

$array = array('apple', 'orange', 'banana', 'apple', 'orange');
$new_array = array_keys(array_flip($array));
print_r($new_array);
登入後複製

輸出結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
)
登入後複製
登入後複製
登入後複製
登入後複製

4.使用array_filter函數

最後一個方法是使用array_filter函數。 array_filter函數可以使用指定的回呼函數對陣列中的每個元素進行過濾,最終傳回過濾後的陣列。具體實作方法是先定義一個匿名函數作為回呼函數,然後在過濾時將這個函數作為參數傳遞給array_filter函數即可。

範例程式碼:

$array = array('apple', 'orange', 'banana', 'apple', 'orange');
$new_array = array_filter($array, function($value, $key){
    static $unique = array();
    if(!in_array($value, $unique)){
        $unique[] = $value;
        return true;
    }
    return false;
}, ARRAY_FILTER_USE_BOTH);
print_r($new_array);
登入後複製

輸出結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
)
登入後複製
登入後複製
登入後複製
登入後複製

以上就是四種常用的PHP陣列去重的方法。根據具體的情況,我們可以靈活地選擇不同的方法來實現數組去重,以達到更好的效果。

以上是聊聊php數組去重的常用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板