萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 陣列入門完全指南:索引、關聯、多維與遍歷技巧

陣列是 PHP 最核心、最靈活的資料結構,同時扮演列表、映射、集合、堆疊、佇列等角色。本文系統梳理陣列創建、訪問、遍歷、多維操作與常見陷阱。

三種陣列類型

1. 索引陣列(數字鍵)

$colors = ['Red', 'Green', 'Blue']; // 自動鍵 0,1,2
$colors[5] = 'Yellow'; // 鍵可不連續

2. 關聯陣列(字符串鍵)

$age = ['Peter'=>32, 'Quagmire'=>30];
$age['Joe'] = 34; // 動態新增

3. 多維陣列(陣列嵌套)

$families = [
    'Griffin' => ['Peter', 'Lois', 'Megan'],
    'Quagmire' => ['Glenn'],
];
echo $families['Griffin'][2]; // Megan

遍歷方式對比

方式適用場景鍵值獲取效能
foreach ($arr as $v)只需值僅值快(值拷貝但 Copy-on-Write)
foreach ($arr as $k => $v)需鍵值鍵+值快
for ($i=0; $i<count($arr); $i++)需索引控制索引+值中(每次 count())
while (list($k,$v)=each($arr))需內部指針控制鍵+值慢(已棄用 PHP 7.2,移除 PHP 8.0)

遍歷順序保證

PHP 陣列為有序映射,遍歷順序 = 插入順序。無論鍵為數字或字符串:

$arr[2] = 'a'; $arr[1] = 'b'; $arr[0] = 'c';
foreach ($arr as $k=>$v) echo "$k=$v "; // 輸出:2=a 1=b 0=c

修改陣列值

// 傳值遍歷(不影響原陣列)
foreach ($arr as $v) { $v *= 2; }

// 傳引用遍歷(修改原陣列)
foreach ($arr as &$v) { $v *= 2; }
unset($v); // 必須銷毀引用,防止後續誤用

// 或用鍵名賦值
foreach ($arr as $k => $v) { $arr[$k] *= 2; }

常用陣列函數速查

  • 鍵值檢查:array_key_exists、isset(見 177365 陷阱)。
  • 增刪:array_push/pop/shift/unshift、unset($arr[$k])、array_splice。
  • 合併:array_merge(字符串鍵後覆蓋前,數字鍵重新索引)、+ 運算符(鍵不覆蓋)。
  • 查找:in_array(嚴格模式第 3 參數 true)、array_search、array_keys。
  • 轉換:array_column 提取列、array_map 映射、array_filter 過濾、array_reduce 歸約。

陷阱:字符串當陣列訪問

$str = 'abc';
echo $str['x']; // 'a' —— 字符串鍵被轉為 0,極易導致邏輯錯誤
// 防禦:操作前 is_array($var) 判斷

結語

PHP 陣列功能極其強大,掌握創建、遍歷、修改、常用函數與順序語義,能讓數據處理代碼簡潔高效。養成 foreach ($arr as $k=>$v) 與 array_key_exists 的習慣,避開 90% 陣列坑。

copyright © 萬盛學電腦網 all rights reserved