PHP 提供 80+ 陣列函數,本文精選 20 個高頻實用函數,按功能分類附最小示例,作為開發時的桌邊速查卡。
array_change_key_case($arr, CASE_UPPER/CASE_LOWER)
array_chunk($arr, $size, $preserve_keys=true/false)
array_diff_assoc($a1, $a2) // 鍵值都比較
array_diff($a1, $a2) // 僅比較值
array_intersect_assoc() // 交集(鍵值)
array_intersect() // 交集(值)
array_fill($start_index, $num, $value) // 可負索引
array_flip($arr) // 值必須為 string/int,重複值後者覆蓋
array_map('callback', $arr1, $arr2...) // 回調參數數 = 陣列數
// 示例:平方
array_map(function($n){ return $n*$n; }, [1,2,3,4,5]); // [1,4,9,16,25]
array_merge_recursive($a1, $a2)
/* ['color'=>['fav'=>'red'], 5] + [10, ['fav'=>'yellow','blue']]
→ ['color'=>['fav'=>['red',['yellow','blue']]], 0=>5, 1=>10] */
array_reduce($arr, 'callback', $initial)
/* callback($carry, $item) → new_carry
sum: array_reduce([1,2,3,4,5], function($c,$w){$c+=$w;return $c;}) → 15
mul: array_reduce([1,2,3,4,5], function($c,$w){$c*=$w;return $c;}, 10) → 1200
empty+initial: array_reduce([], 'sum', 1) → 1 */
array_replace($base, $repl1, $repl2...)
/* ['orange','banana','apple','raspberry'] + [0=>'pineapple',4=>'cherry'] + [0=>'grape']
→ ['grape','banana','apple','raspberry','cherry'] */
array_splicearray_splice(&$input, $offset, $length, $replacement)
// 移除 $offset 起 $length 個,可選插入 $replacement
// 返回被移除元素陣列
// 負 offset/length 從末尾計算
key($arr) // 當前鍵
current($arr) // 當前值
next/prev($arr) // 移動指針
reset/end($arr) // 歸零/移至末尾
each($arr) // 返回[key,value]並前進(PHP 7.2 棄用,建議 foreach)
array_keys/array_values // 取所有鍵/值
array_key_exists/in_array // 鍵/值存在性
array_search // 值搜索返回鍵
array_unique // 去重(值)
array_count_values // 值頻次統計
array_column($arr, 'col') // 提取二維陣列某列 (PHP 5.5+)
array_combine($keys, $values) // 組合成關聯陣列
array_filter($arr, 'callback') // 過濾
array_walk(&$arr, 'callback') // 遍歷修改(引用)
shuffle(&$arr) // 打亂順序
sort/rsort/asort/arsort/ksort/krsort // 各種排序(引用修改)
isset($arr[$key]) 比 array_key_exists 快 3 倍(但不檢查 null 值)array_flip(array_flip($arr)) 比 array_unique 快in_array 檢查時,先 $flip = array_flip($arr) 再用 isset背熟這 20 個函數,覆蓋 95% 陣列操作場景,代碼更簡潔、效能更穩健。