陣列是 PHP 最核心的資料結構。本文以零基礎視角,從索引、關聯、多維陣列到實務 foreach 輸出與 unset 刪除,一次釐清觀念。
<?php
// 1. 空陣列實例化
$arr = [];
// 2. 不指定鍵名 → 自動產生 0,1,2...
$arr = ['a', 'b'];
print_r($arr); // Array ( [0] => a [1] => b )
// 3. 自訂數字鍵名(可不連續)
$arr = [3 => 'a', 5 => 'b'];
print_r($arr); // Array ( [3] => a [5] => b )
// 4. 字串鍵名(關聯陣列)
$arr = ['aa' => 'a', 'bb' => 'b'];
echo $arr['aa']; // 輸出 a
?>
<?php
// 二維陣列
$arr = [
0 => ['a', 'b'],
1 => ['c', 'd']
];
echo $arr[0][1]; // b
// 三維以上同理
$arr = [
0 => [ ['a','b'], ['c','d'] ],
1 => [ ['e','f'], ['g','h'] ]
];
?>
<?php
$users = [];
for ($i = 0; $i <= 10; $i++) {
// 關鍵:$users[] 會自動推入新索引,避免覆蓋
$users[] = [
'name' => '我的名' . $i,
'age' => '我的年紀1' . $i
];
}
// 輸出 HTML 清單
?>
<?php foreach ($users as $user): ?>
- = $user['name'] ?> | = $user['age'] ?>
<?php endforeach; ?>
<?php
// 刪除指定索引
unset($users[3]);
print_r($users); // 索引 3 消失,其餘保留原鍵名
?>
echo $arr 會報錯:陣列只能用 print_r、var_dump 或迴圈輸出。'0' (字串) 會變成 0 (整數);true 變 1;null 變空字串。foreach ($arr as &$v) 時,$v 變更會影響原陣列,用完記得 unset($v)。掌握基礎後,可進一步學習 array_map、array_filter、array_reduce 等函數式操作,以及 ArrayAccess、Iterator 介面實作物件化陣列。