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

PHP Array 函數完整參考:陣列操作大全

     編輯:PHP 入門

PHP Array 函數完整參考:陣列操作大全


簡介

PHP 陣列是有序的鍵值對集合,支援一維、多維、關聯陣列與數字索引陣列。內建超過 80 個陣列函數,涵蓋建立、合併、分割、搜尋、排序、過濾、映射、走訪、堆疊/佇列操作等。所有函數內建核心,無需安裝。


核心函數分類速查

函數說明
array() / []建立陣列 (短語法 PHP 5.4+)
array_change_key_case()將所有鍵名轉大寫/小寫
array_chunk()分割陣列為指定大小的區塊
array_column()取得多維陣列中單一欄位的值 (PHP 5.5+)
array_combine()以一個陣列為鍵、另一個為值建立新陣列
array_count_values()統計所有值出現次數
array_diff()差集 (僅比較值)
array_diff_assoc()差集 (比較鍵名與值)
array_diff_key()差集 (僅比較鍵名)
array_diff_uassoc()差集 (使用者自訂鍵名比較函數)
array_diff_ukey()差集 (使用者自訂鍵名比較函數)
array_fill()以指定值填充陣列
array_fill_keys()以指定鍵名與值填充陣列
array_filter()回呼函數過濾元素
array_flip()交換鍵名與值
array_intersect()交集 (僅比較值)
array_intersect_assoc()交集 (比較鍵名與值)
array_intersect_key()交集 (僅比較鍵名)
array_intersect_uassoc()交集 (使用者自訂鍵名比較)
array_intersect_ukey()交集 (使用者自訂鍵名比較)
array_key_exists()檢查鍵名是否存在
array_keys()取得所有鍵名
array_map()回呼函數處理每個值,返回新陣列
array_merge()合併一或多個陣列 (數字鍵重新索引)
array_merge_recursive()遞迴合併 (相同字串鍵合併為陣列)
array_multisort()多陣列或多維陣列排序
array_pad()補齊指定長度與值
array_pop()彈出最後一個元素 (堆疊)
array_product()計算所有值乘積
array_push()壓入一或多個元素到末尾 (堆疊)
array_rand()隨機取出一或多個鍵名
array_reduce()回呼函數遞迴簡化為單一值
array_replace()後續陣列值取代第一個陣列
array_replace_recursive()遞迴取代
array_reverse()反轉順序返回新陣列
array_search()搜尋值返回對應鍵名
array_shift()移除第一個元素並返回 (佇列)
array_slice()取得陣列片段
array_splice()移除並替換指定片段
array_sum()計算所有值總和
array_udiff()差集 (使用者自訂值比較函數)
array_udiff_assoc()差集 (內建比較鍵名、使用者比較值)
array_udiff_uassoc()差集 (兩個使用者比較函數)
array_uintersect()交集 (使用者自訂值比較)
array_uintersect_assoc()交集 (內建比較鍵名、使用者比較值)
array_uintersect_uassoc()交集 (兩個使用者比較函數)
array_unique()移除重複值
array_unshift()在開頭插入一或多個元素
array_values()取得所有值 (重新數字索引)
array_walk()對每個元素應用使用者函數
array_walk_recursive()遞迴應用使用者函數
arsort()關聯陣列按值降序排序 (保持鍵名關聯)
asort()關聯陣列按值升序排序
compact()以變數名與值建立陣列
count() / sizeof()計算元素數量
current() / pos()取得目前元素值
each()取得目前鍵/值對並前進指標 (PHP 7.2 棄用)
end()指標指向最後一個元素
extract()從陣列匯入變數到符號表
in_array()檢查值是否存在
key()取得目前鍵名
krsort()關聯陣列按鍵名降序排序
ksort()關聯陣列按鍵名升序排序
list()將陣列值賦予變數
natcasesort()自然排序 (不分大小寫)
natsort()自然排序
next()指標前進一位
prev()指標後退一位
range()建立指定範圍的陣列
reset()指標指向第一個元素
rsort()數值陣列降序排序
shuffle()隨機打亂順序
sort()數值陣列升序排序
uasort()使用者自訂比較函數排序值 (保持鍵名)
uksort()使用者自訂比較函數排序鍵名
usort()使用者自訂比較函數排序值 (重新索引)

常見操作範例

1. 建立與合併

<?php
$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['c' => 3, 'd' => 4];
$merged = array_merge($arr1, $arr2); // ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4]
$combined = array_combine(['x','y'], [10,20]); // ['x'=>10, 'y'=>20]
?>

2. 過濾與映射

<?php
$numbers = [1,2,3,4,5,6];
$even = array_filter($numbers, fn($n) => $n % 2 === 0); // [2,4,6]
$squared = array_map(fn($n) => $n * $n, $numbers); // [1,4,9,16,25,36]
?>

3. 多維陣列欄位提取

<?php
$users = [
    ['id'=>1, 'name'=>'Alice', 'email'=>'alice@example.com'],
    ['id'=>2, 'name'=>'Bob', 'email'=>'bob@example.com'],
];
$emails = array_column($users, 'email'); // ['alice@example.com', 'bob@example.com']
?>

4. 排序

<?php
$data = ['orange'=>3, 'apple'=>1, 'banana'=>2];
asort($data); // ['apple'=>1, 'banana'=>2, 'orange'=>3]
ksort($data); // ['apple'=>1, 'banana'=>2, 'orange'=>3] (鍵名已有序)
usort($values, fn($a,$b) => $b - $a); // 數值降序
?>

5. 堆疊與佇列

<?php
$stack = [];
array_push($stack, 'a', 'b', 'c');
$last = array_pop($stack); // 'c'

$queue = [];
array_push($queue, 'first', 'second');
$first = array_shift($queue); // 'first'
?>

效能與選擇建議

  • 頻繁在陣列頭部插入/刪除:考慮 SplDoublyLinkedList 或 SplQueue/SplStack。
  • 大量資料去重:array_unique() 會保留首次出現的鍵名,若不需保留鍵名可搭配 array_values() 重新索引。
  • 遞迴處理多維陣列:array_walk_recursive() 僅遍歷葉子節點,配合引用參數可修改原陣列。
  • 排序大陣列:usort() 等使用者比較函數較慢,能用內建 sort()/asort() 盡量優先。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved