陣列是 PHP 最核心、最靈活的資料結構。本文從基礎概念出發,系統講解三種陣列型態的建立、存取、遍歷與實用技巧,並附贈常用操作函數速查表,適合初學者建立完整知識體系。
陣列是有序的 鍵值對 集合。鍵可以是 整數(索引陣列) 或 字串(關聯陣列),值可以是任意型別(含另一個陣列,形成多維陣列)。
<?php
// 自動指派索引(推薦)
$names = ['Peter', 'Quagmire', 'Joe'];
// 手動指派索引
$names[0] = 'Peter';
$names[1] = 'Quagmire';
$names[2] = 'Joe';
// 陣列語法(PHP 5.4+ 短語法)
$names = ['Peter', 'Quagmire', 'Joe'];
<?php
echo $names[1] . ' and ' . $names[2] . ' are ' . $names[0] . '\'s neighbors';
// 輸出:Quagmire and Joe are Peter's neighbors
<?php
// 一次宣告
$ages = ['Peter' => 32, 'Quagmire' => 30, 'Joe' => 34];
// 分步賦值
$ages['Peter'] = 32;
$ages['Quagmire'] = 30;
$ages['Joe'] = 34;
<?php
echo 'Peter is ' . $ages['Peter'] . ' years old.'; // Peter is 32 years old.
<?php
$families = [
'Griffin' => ['Peter', 'Lois', 'Megan'],
'Quagmire' => ['Glenn'],
'Brown' => ['Cleveland', 'Loretta', 'Junior']
];
// 存取單一值
echo 'Is ' . $families['Griffin'][2] . ' a part of the Griffin family?';
// 輸出:Is Megan a part of the Griffin family?
| 方式 | 適用場景 | 範例 |
|---|---|---|
| foreach (值) | 僅需值 | foreach ($arr as $v) { ... } |
| foreach (鍵 => 值) | 需鍵與值 | foreach ($arr as $k => $v) { ... } |
| for / while + count() | 需索引控制、反向遍歷 | for ($i=0; $i<count($arr); $i++) |
| array_walk / array_map | 函數式處理、轉換 | array_map('strtoupper', $arr) |
isset($arr['key'])、array_key_exists('key', $arr)、in_array($val, $arr)$arr[] = $val、array_push()、unset($arr['key'])、array_splice()array_merge()、array_chunk()、$a + $bsort()、rsort()、asort()、ksort()、usort()(自訂比較)count()、array_count_values()、array_unique()、array_filter()、array_sum()array_keys()、array_values()、array_flip()、array_combine()[$a, $b, $c] = $arr; 或 ['x'=>$x, 'y'=>$y] = $arr;$merged = [...$a, ...$b];foreach ($arr as &$v) { ... } unset($v);Generator 分批處理、或使用 SplFixedArray(僅整數索引)。