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

PHP array_flip 去除陣列重複值:原理與效能優勢分析

     編輯:PHP 相關知識

array_flip() 交換陣列鍵值,利用「鍵名唯一」特性可高效去重,效能約為 array_unique() 的 5 倍。本文解析原理與使用技巧。

基本用法

$arr = array(/* 萬筆資料,含重複 */);
$arr = array_flip(array_flip($arr)); // 去重完成

原理解析

  1. array_flip($arr):將值轉為鍵,重複值導致鍵衝突,**後出現的覆蓋先出現的**(保留最後一個)。
  2. 第二次 array_flip():將鍵值再交換回來,得到去重後的陣列(索引重排為 0,1,2...)。

範例演示

$arr1 = array("age" => 30, "name" => "腳本之家", "age" => 20);
// 實際等同於
$arr1 = array("name" => "腳本之家", "age" => 20); // 重複鍵 age 保留最後值

$arr2 = array_flip($arr1);
// $arr2 = array(30 => "age", "腳本之家" => "name") -> 但 30 被覆蓋
// 實際:$arr2 = array("腳本之家" => "name", 20 => "age")

$arr3 = array_flip($arr2);
// $arr3 = array("name" => "腳本之家", "age" => 20) // 去重完成

效能對比

函數時間複雜度實測萬筆耗時備註
array_flip x2O(n)~2ms利用 HashTable 鍵唯一性,單遍歷
array_uniqueO(n log n) 或 O(n²)~10ms內部排序/比較,保留首次出現

注意事項

  • 去重後**數值索引會重排(0,1,2...)**,關聯索引保留最後出現的鍵名。
  • 值必須為合法鍵型別(int/string),物件/陣列/資源會觸發警告並跳過。
  • 若需保留**首次出現**的值,請用 array_unique 或先 array_reverse 再雙重 flip。

適用場景

  • 大量純量值陣列(ID、字串、數字)高頻去重。
  • 不介意保留最後出現值、索引重排的場景。
  • 效能敏感路徑(如 API 回應預處理、大量資料導入清洗)。

善用 array_flip 雙重翻轉技巧,能以極簡代碼獲得極致去重效能。

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