首頁 > 後端開發 > php教程 > PHP 中對陣列去重並保持鍵名的最佳方法

PHP 中對陣列去重並保持鍵名的最佳方法

PHPz
發布: 2024-05-01 13:00:02
原創
1050 人瀏覽過

PHP 中對陣列去重且保持鍵名的最佳方法有兩種:array_unique():可去重但不保留鍵名,重新索引數組。自訂函數 array_unique_preserve_keys():使用雜湊值比較值,可去重並保留鍵名。

PHP 中对数组去重并保持键名的最佳方法

PHP 中對陣列去重並保持鍵名的最佳方法

在PHP 中,陣列去重是指刪除重複的值,同時保持鍵名不變。這在處理來自不同來源的可能包含重複元素的資料時非常有用,例如來自多個表單提交或資料庫查詢。

方法 1:array_unique()

array_unique() 函數是內建的 PHP 函數,用來對陣列進行去重。它接受一個數組作為輸入,並傳回一個新的數組,其中重複的值已被刪除。但是,array_unique() 不會保留鍵名,而是重新索引數組,從 0 開始。

範例:

$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a'];

$result = array_unique($arr);

print_r($result); // 输出:['a', 'b', 'c', 'd', 'e']
登入後複製

方法2:自訂函數

為了保持鍵名,我們可以寫一個自訂函數來對數組進行去重。此方法使用關聯數組並比較每個值的雜湊值來確定是否重複。

範例:

function array_unique_preserve_keys($arr)
{
    $hash = [];
    $unique_arr = [];

    foreach ($arr as $key => $value)
    {
        $hash_value = md5($value);
        if (!isset($hash[$hash_value]))
        {
            $hash[$hash_value] = 1;
            $unique_arr[$key] = $value;
        }
    }

    return $unique_arr;
}

$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a'];

$result = array_unique_preserve_keys($arr);

print_r($result); // 输出:['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e']
登入後複製

實戰案例:

假設我們有一個來自表單提交的數組,其中包含重複的使用者名稱和電子郵件地址。透過使用 array_unique_preserve_keys() 函數對其進行去重,我們可以移除重複記錄,同時保持使用者的使用者名稱。

$form_data = [
    ['username' => 'john', 'email' => 'john@example.com'],
    ['username' => 'jane', 'email' => 'jane@example.com'],
    ['username' => 'john', 'email' => 'john@example.org'],
    ['username' => 'mark', 'email' => 'mark@example.net']
];

$unique_users = array_unique_preserve_keys($form_data);

print_r($unique_users); // 输出:['john' => ['username' => 'john', 'email' => 'john@example.com'], 'jane' => ['username' => 'jane', 'email' => 'jane@example.com'], 'mark' => ['username' => 'mark', 'email' => 'mark@example.net']]
登入後複製

以上是PHP 中對陣列去重並保持鍵名的最佳方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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