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

PHP數組函數大全:分類匯總、常用陷阱與現代替代寫法

     編輯:PHP 相關知識

PHP 陣列函數速查表:80+ 函數分類整理、高頻坑點與 PHP 8.1+ 現代寫法

陣列是 PHP 最核心的資料結構。掌握標準庫函數,能將 20 行循環壓縮為 1 行管道操作。

一、指針與遍歷

二、鍵值轉換與大小寫

  • array_change_key_case($arr, CASE_LOWER|UPPER):鍵名統一大小寫。
  • array_flip($arr):鍵值互換(值需唯一且為 string/int)。
  • array_keys($arr) / array_values($arr):提取鍵/值陣列(值陣列自動重建 0-based 索引)。

三、填充、分塊、合併

  • array_fill($start, $count, $value):建立指定索引起始的填充陣列。
  • array_chunk($arr, $size, $preserve_keys=false):切分為多個子陣列(分頁、批次處理神器)。
  • array_merge(...$arrs):合併(數字鍵重建,字符串鍵後覆蓋前)。
  • array_merge_recursive:遞歸合併(同鍵值變為陣列)。
  • + 運算子:鍵不覆蓋的合併(左優先)。

四、查找與過濾

函數說明現代替代
current/key/next/prev/end/reset內部指針操作foreach / array_values / array_keys
each已棄用 (PHP 7.2+)foreach

五、去重、統計、數學

  • array_unique($arr, $sort_flags):去重(保留首次出現的鍵)。
  • array_count_values($arr):值頻次統計(值需 string/int)。
  • array_sum($arr) / array_product($arr):求和/乘積。
  • array_column($arr, $col, $index_key):提取欄位組成新陣列(極常用)。

六、排序(原地修改、返回 bool)

函數用途嚴格模式
in_array($needle, $haystack, $strict)值存在性$strict=true 比較類型
array_search($needle, $haystack, $strict)返回首個匹配的鍵同上
array_key_exists($key, $arr)鍵存在性不檢查值類型
isset($arr[$key])鍵存在且值非 null比 array_key_exists 快
array_filter($arr, $callable, $flag)過濾$flag: ARRAY_FILTER_USE_KEY/BOTH

七、棧/隊操作

  • 棧(後進先出):array_push($arr, ...$vals) / array_pop($arr)。
  • 隊(先進先出):array_unshift($arr, ...$vals) / array_shift($arr)。

八、差集/交集/交集

  • array_diff($a, $b...):在 $a 不在 $b 的值(比較值)。
  • array_diff_key($a, $b...):比較鍵。
  • array_diff_assoc($a, $b...):比較鍵+值。
  • array_intersect($a, $b...):交集(值)。
  • array_intersect_key/assoc:鍵/鍵值交集。

高頻坑點速查

函數順序保留鍵比較方式
sort/rsort升/降否常規
asort/arsort升/降是常規
ksort/krsort升/降是按鍵
natsort/natcasesort自然序是字符串數字感知
usort/uasort/uksort自定義視函數回調比較

現代管道寫法(PHP 8.1+)

$users = [
    ['name'=>'Alice','age'=>25,'active'=>true],
    ['name'=>'Bob','age'=>17,'active'=>false],
    ['name'=>'Carol','age'=>30,'active'=>true],
];

// 取得活躍成年用戶名,按年齡降序
$names = array_column(
    array_filter($users, fn($u) => $u['active'] && $u['age'] >= 18),
    'name'
);
// 或使用箭頭函數鏈(需自定義 pipe 函數或用 laravel collect)
// collect($users)->where('active', true)->where('age', '>=', 18)->sortByDesc('age')->pluck('name')->all();

熟練使用標準庫,少寫循環,代碼更簡潔、可讀、高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
代碼問題修正
in_array('foo', $arr)字符串 '0' 匹配 false/0/nullin_array('foo', $arr, true)
array_merge($a, $b)數字鍵重建導致順序變化用 $a + $b 或 array_replace
array_unique($arr)保留鍵導致索引不連續array_values(array_unique($arr))
sort($arr)字符串數字 '10' < '2'natsort($arr) 或 sort($arr, SORT_NATURAL)
array_filter($arr)無回調默認移除 falsy 值明確回調 fn($v) => $v !== ''