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

PHP4 新增陣列函數解析:array_unique、array_intersect、array_diff

     編輯:PHP 相關知識

前言

PHP 4 引入三個實用的陣列函數,大幅簡化陣列去重、交集與差集運算。本文簡要說明用法與範例。

1. array_unique() - 移除重複值

$arr = array("a", "b", "c", "b");
$arr = array_unique($arr);
var_dump($arr);
// 輸出: array(3) { [0]=> "a" [1]=> "b" [2]=> "c" }

特性:保留首次出現的鍵值,後續重複值被移除;鍵名保持不變 (非重新索引)。

2. array_intersect() - 計算交集

$arr1 = array("a", "b", "c", "d");
$arr2 = array("e", "f", "b", "a");
$arr = array_intersect($arr1, $arr2);
var_dump($arr);
// 輸出: array(2) { [0]=> "a" [1]=> "b" }

特性:比較值 (不比較鍵名),回傳存在於所有輸入陣列中的值;鍵名來自第一個陣列。支援多個陣列參數。

3. array_diff() - 計算差集

$arr1 = array("a", "b", "c", "d");
$arr2 = array("e", "f", "b", "a");
$arr = array_diff($arr1, $arr2);
var_dump($arr);
// 輸出: array(2) { [2]=> "c" [3]=> "d" }

特性:回傳存在於第一個陣列但不存在於其他陣列的值;鍵名保留。支援多個比較陣列 (array_diff($arr1, $arr2, $arr3...))。

常見誤區與補充

  • 鍵名保留:三函數皆保留原鍵名,若需重新索引請用 array_values() 包裹。
  • 嚴格比較:PHP 5+ 提供 array_unique($arr, SORT_REGULAR) 等排序旗標,預設為鬆散比較 (字串 "1" == 整數 1)。
  • 關聯陣列:若需比較「鍵名+值」,請使用 array_intersect_assoc()、array_diff_assoc()。
  • 效能:大型陣列 (超過萬筆) 時,考慮用 array_flip() + isset() 手寫迴圈可更快。

總結

這三個函數讓 PHP 陣列操作更貼近集合論語意,減少手寫迴圈錯誤機率。作者感嘆「PHP4 更人性化了」,放在今天依然實用。

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