陣列是 PHP 中最核心、使用頻率最高的資料結構。掌握內建陣列函數能大幅提升開發效率,避免重複造輪子。本文系統整理 30 個常用陣列操作函數,按功能分類並附帶語法說明。
搜尋與檢查類
| 函數 | 用途 | 語法 |
in_array() | 檢查值是否存在於陣列 | bool in_array(mixed $needle, array $haystack, bool $strict = false) |
array_key_exists() | 檢查鍵名是否存在(注意:原文有誤寫為 array_eky_exists) | bool array_key_exists(mixed $key, array $array) |
array_search() | 搜尋值並返回對應鍵名 | mixed array_search(mixed $needle, array $haystack, bool $strict = false) |
鍵值提取類
| 函數 | 用途 | 語法 |
array_keys() | 取得所有鍵名組成新陣列 | array array_keys(array $array, mixed $search_value = null) |
array_values() | 取得所有值組成新陣列(重新索引) | array array_values(array $array) |
統計與計數類
| 函數 | 用途 | 語法 |
count() / sizeof() | 計算陣列元素個數 | int count(array $array, int $mode = COUNT_NORMAL) |
array_count_values() | 統計值出現頻率 | array array_count_values(array $array) |
去重與反轉類
| 函數 | 用途 | 語法 |
array_unique() | 移除重複值 | array array_unique(array $array) |
array_reverse() | 反轉陣列順序 | array array_reverse(array $array, bool $preserve_keys = false) |
array_flip() | 交換鍵名與值 | array array_flip(array $array) |
排序類(重點掌握)
| 函數 | 特性 | 保留鍵名 |
sort() / rsort() | 值排序(正向/反向) | 否(重新索引) |
asort() / arsort() | 值排序(正向/反向) | 是 |
ksort() / krsort() | 鍵名排序(正向/反向) | 是 |
natsort() / natcasesort() | 自然排序(不分大小寫) | 是 |
usort() | 自定義比較函數排序 | 否 |
排序旗標:SORT_REGULAR(預設)、SORT_NUMERIC、SORT_STRING、SORT_LOCALE_STRING
合併與分割類
| 函數 | 用途 | 關鍵差異 |
array_merge() | 合併陣列 | 字串鍵名後覆蓋前;數字鍵名重新索引 |
array_merge_recursive() | 遞歸合併 | 相同字串鍵名合併為陣列 |
array_combine() | 以一個陣列為鍵、另一個為值建立新陣列 | 兩陣列長度必須相同 |
array_slice() | 截取陣列片段 | 不修改原陣列 |
array_splice() | 移除並替換片段 | 修改原陣列,返回被移除元素 |
集合運算類
| 函數 | 用途 |
array_intersect() | 交集(比較值) |
array_intersect_assoc() | 交集(比較鍵名+值) |
array_diff() | 差集(第一個陣列有、其他沒有的值) |
array_diff_assoc() | 差集(比較鍵名+值) |
其他實用函數
array_rand():隨機取得一個或多個鍵名
shuffle():打亂陣列順序
array_sum():計算所有值的總和
array_chunk():將陣列分割成多個固定大小的區塊
array_pad():填充陣列到指定長度
array_fill() / array_fill_keys():建立填充值的陣列
range():建立指定範圍的陣列
compact() / extract():變數與陣列互轉
效能提示
- 優先使用內建函數而非手寫迴圈
- 大陣列操作時注意記憶體使用,適時
unset() 釋放
isset($arr[$key]) 比 array_key_exists() 更快
- 避免在迴圈中重複呼叫
count(),預先儲存長度
熟練掌握這些函數,能讓 PHP 陣列操作事半功倍。建議收藏備查,實戰中多加練習。