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

PHP 數組函數大全:分類速查、常見陷阱與現代替代方案

     編輯:PHP 相關知識

分類速查表(PHP 8.2+)

分類函數說明注意/替代
創建/填充array() / []創建數組短語法 [] 更推薦
range()生成範圍數組支援字符、步長:range('a','z')
array_fill()填充固定值array_fill(0, 5, 'x')
array_pad()補齊指定長度負索引補左側
鍵值操作array_keys()獲取所有鍵可選搜索值
array_values()獲取所有值(重建索引)常用於重置數字索引
array_flip()交換鍵值值重複會丟失,值必須為 int/string
array_change_key_case()鍵名大小寫轉換CASE_LOWER/UPPER
array_combine()兩數組合並為鍵值長度必須相等
array_column()提取多維數組單列神器:array_column($users, 'name', 'id')
合併/拆分/切片array_merge()合併(字符串鍵後覆蓋、數字鍵重索引)+ 運算符保留首次鍵
array_merge_recursive()遞歸合併(同鍵值成數組)深度合併配置常用
array_slice()切片(不改原數組)負 offset 從末尾算
array_splice()剪切並可替換(改原數組)返回被移除元素
array_chunk()分塊分頁處理大數組
explode() / implode()字符串⇄數組別名 split() 已移除
查找/過濾in_array()值存在性大數組用 isset($map[$val]) O(1)
array_search()搜值返鍵嚴格模式 true 防 "0" == 0
array_filter()回調過濾ARRAY_FILTER_USE_KEY/BOTH 可用鍵
array_unique()去重(保留首次鍵)SORT_STRING/REGULAR/NUMERIC/LOCALE_STRING
array_intersect()交集(保留鍵)_key/_assoc/_uassoc 變體
排序sort()/rsort()值排序(重建索引)SORT_NATURAL | SORT_FLAG_CASE 自然序
asort()/arsort()值排序(保留鍵)
ksort()/krsort()鍵排序
usort()/uksort()/uasort()用戶自定義比較太空船操作符 $a <=> $b 簡潔
array_multisort()多數組/多維排序類 SQL ORDER BY
堆疊/隊列array_push()/array_pop()棧尾進出$arr[] = $v 更快
array_unshift()/array_shift()棧頭進出大數組頻繁操作考慮 SplQueue/SplStack
array_reverse()反轉第二參數 true 保留鍵
shuffle()打亂改原數組,重建索引
array_rand()隨機取鍵加密用途請用 random_int()
計算/統計count()/sizeof()元素個數Countable 介面物件也適用
array_count_values()值頻次統計
array_sum()/array_product()求和/求積
array_reduce()歸約函數式風格聚合
指針/遍歷current()/next()/prev()/reset()/end()內部指針操作慎用:foreach 不影響指針,但函數式操作會
each()取當前鍵值並前進PHP 8.0 移除,改用 foreach
list()解包賦值[$a, $b] = $arr 短語法
走訪/轉換array_map()映射多數組並行映射
array_walk()遍歷修改(引用傳值)需 &$v 修改原值
array_walk_recursive()遞歸遍歷葉子節點只處理非數組值

高頻陷阱與最佳實踐

  1. in_array($needle, $haystack) 非嚴格模式類型轉換陷阱:in_array('abc', [0]) 返回 true。永遠加第三參數 true。
  2. array_merge 數字鍵重索引:array_merge([5=>'a'], [3=>'b']) => [0=>'a', 1=>'b']。需保留鍵用 + 運算符或 array_replace。
  3. array_unique 保留首次鍵:['a'=>1, 'b'=>1] => ['a'=>1]。若需重建索引再包一層 array_values()。
  4. 大數組去重/查找用鍵值映射:$map = array_flip($largeArray); isset($map[$val]) O(1) 遠快於 in_array O(n)。
  5. 避免在循環中 count():for ($i=0, $n=count($arr); $i<$n; $i++) 或直接 foreach。
  6. 多維數組提取列用 array_column():array_column($rows, 'name', 'id') 一步得到 ['id'=>'name', ...]。

現代化替代:集合類與函數式庫

  • Illuminate\Support\Collection (Laravel) / tightenco/collect:鏈式調用、懶惰求值、豐富方法。collect($arr)->where('age','>',18)->pluck('name')->unique()->values()->all()
  • laminas/laminas-stdlib ArrayObject、IteratorAggregate:SPL 標準介面,物件化數組操作。
  • functional-php/functional / php-functional/core:map/filter/reduce 等純函數式原語。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved