PHP 4 引入三個實用的陣列函數,大幅簡化陣列去重、交集與差集運算。本文簡要說明用法與範例。
$arr = array("a", "b", "c", "b");
$arr = array_unique($arr);
var_dump($arr);
// 輸出: array(3) { [0]=> "a" [1]=> "b" [2]=> "c" }
特性:保留首次出現的鍵值,後續重複值被移除;鍵名保持不變 (非重新索引)。
$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" }
特性:比較值 (不比較鍵名),回傳存在於所有輸入陣列中的值;鍵名來自第一個陣列。支援多個陣列參數。
$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() 包裹。array_unique($arr, SORT_REGULAR) 等排序旗標,預設為鬆散比較 (字串 "1" == 整數 1)。array_intersect_assoc()、array_diff_assoc()。array_flip() + isset() 手寫迴圈可更快。這三個函數讓 PHP 陣列操作更貼近集合論語意,減少手寫迴圈錯誤機率。作者感嘆「PHP4 更人性化了」,放在今天依然實用。