首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 移除二維陣列重複值的兩種高效實現方法

     編輯:PHP 綜合知識

在 PHP 開發中,處理二維陣列去重是常見需求。雖然 array_unique() 適用於一維陣列,但直接用於多維陣列會失效。本文介紹兩種實用的二維陣列去重方案,並分析其適用場景。

方法一:基於字串轉換的通用去重

此方法將子陣列轉為字串後去重,再還原結構,適合不需保留原鍵值的場景:

function array_unique_fb($array2D) {
    foreach ($array2D as $v) {
        $v = join(',', $v); // 降維:將一維陣列轉為逗號分隔字串
        $temp[] = $v;
    }
    $temp = array_unique($temp); // 去除重複字串
    foreach ($temp as $k => $v) {
        $temp[$k] = explode(',', $v); // 還原為陣列結構
    }
    return $temp;
}

方法二:保留原鍵值的進階去重

若需保持原始鍵名關聯,可採用此改良版,並指定欄位映射:

function array_unique_fb($array2D) {
    foreach ($array2D as $k => $v) {
        $v = join(',', $v);
        $temp[$k] = $v; // 保留原鍵名
    }
    $temp = array_unique($temp);
    foreach ($temp as $k => $v) {
        $array = explode(',', $v);
        // 根據實際業務調整欄位映射
        $temp2[$k]['id'] = $array[0];
        $temp2[$k]['title'] = $array[1];
        $temp2[$k]['keywords'] = $array[2];
        $temp2[$k]['content'] = $array[3];
    }
    return $temp2;
}

方案選擇建議

  • 方法一:結構簡單、通用性強,適合純數值或無固定鍵名的陣列
  • 方法二:保留業務鍵名關聯,適合需對應具體欄位(如資料庫記錄)的場景

實際專案中建議根據資料結構特點選擇,若陣列層級超過二維,可考慮遞迴處理或序列化比對方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved