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

PHP 陣列函數大全:常用操作、範例與避坑指南

     編輯:PHP 綜合知識

前言

PHP 擁有超過 80 個陣列相關函數,本文整理開發中最高頻的 30+ 函數,附上簽名、行為說明、實戰範例與常見誤區,作為快速查閱手冊。

陣列建立與填充

函數用途範例
range($start, $end, $step=1)建立等差數列陣列range(1,5) → [1,2,3,4,5]
array_fill($startIdx, $count, $value)以固定值填充指定長度array_fill(3, 4, 'x') → [3=>'x',4=>'x',5=>'x',6=>'x']
array_fill_keys($keys, $value)以指定鍵名建立陣列array_fill_keys(['a','b'], 0) → ['a'=>0,'b'=>0]
array_combine($keys, $values)合併兩陣列為鍵值對array_combine(['a','b'],[1,2]) → ['a'=>1,'b'=>2]

鍵值操作與大小寫

函數行為注意事項
array_change_key_case($arr, $case=CASE_LOWER)將一維陣列鍵名統一大/小寫不遞迴處理多維陣列;不修改原陣列
array_flip($arr)交換鍵與值值必須為 string/int;重複值會覆蓋
array_keys($arr, $search=null)取得所有鍵名,或指定值的鍵名嚴格比較需自行實作
array_values($arr)重設數字索引 (0,1,2...)常用於 unset 後重排索引

陣列合併、分割與切片

函數差異重點
array_merge($a, $b...)數字鍵重新索引;字串鍵後者覆蓋前者
array_merge_recursive($a, $b...)相同字串鍵合併為陣列,不覆蓋
$a + $b (聯集運算子)鍵名衝突時保留左側,不重新索引數字鍵
array_chunk($arr, $size, $preserveKeys=false)分割成多維陣列,每組 $size 個
array_slice($arr, $offset, $len=null, $preserve=false)切片;$preserve=true 保留字串鍵
array_splice($arr, $offset, $len, $replacement)移除並可選替換;修改原陣列

搜尋、過濾與統計

函數用途回傳值
in_array($needle, $haystack, $strict=false)檢查值是否存在bool
array_search($needle, $haystack, $strict=false)找值對應的第一個鍵mixed/false
array_key_exists($key, $arr)檢查鍵是否存在bool
array_filter($arr, $callback)回呼函數回傳 true 者保留新陣列 (保留鍵)
array_unique($arr, $sortFlags=SORT_STRING)移除重複值,保留第一次出現新陣列
array_count_values($arr)統計各值出現次數['value'=>count]
array_column($arr, $colKey, $indexKey=null)提取多維陣列單一欄位一維陣列

排序函數家族 (皆修改原陣列)

函數排序依據鍵名處理
sort()值升序重設數字索引
rsort()值降序重設數字索引
asort()值升序保留鍵名關聯
arsort()值降序保留鍵名關聯
ksort()鍵升序保留關聯
krsort()鍵降序保留關聯
uasort()自定義比較函數 (值)保留關聯
uksort()自定義比較函數 (鍵)保留關聯
array_multisort()多陣列/多欄位同步排序見專文

遞迴與走訪

  • array_walk($arr, $callback, $userdata):一維走訪,可透過引用 &$value 修改原陣列。
  • array_walk_recursive($arr, $callback):遞迴走訪所有葉子節點,不改變結構。
  • array_map($callback, $arr1, $arr2...):對每個元素應用回呼,回傳新陣列,可同時處理多個陣列。
  • array_reduce($arr, $callback, $initial):將陣列減縮為單一值 (如求和、串接字串)。

常見誤區速查

  1. array_merge 會重設數字鍵 → 若需保留數字鍵用 + 運算子。
  2. in_array 預設鬆散比較 → 'abc' == 0 為 true,嚴格模式請加 true 參數。
  3. array_filter 不傳回呼時 → 移除所有等同 false 的值 (0, '', null, false, [])。
  4. array_unique 只比較值 → 多維陣列去重需自行實作 (如 serialize + array_unique + unserialize)。
  5. shuffle 會重設索引 → 關聯陣列打亂順序請用 uksort($arr, fn()=>rand(-1,1))。

效能小提醒

  • 大陣列 (10萬+) 使用 isset($arr[$key]) 判斷鍵存在,比 array_key_exists 快 2-3 倍。
  • 頻繁 in_array 查找時,先 $flip = array_flip($arr) 再用 isset($flip[$val]),複雜度從 O(n) 降為 O(1)。
  • 避免在迴圈中重複呼叫 count($arr),預先存入變數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved