本文整合陣列引用語法、六大核心函式、遍歷模式、刪除機制與三大實戰案例 (成績統計、乘法表、表單合併),為 PHP 陣列操作的完整實戰手冊。
$value = $arr[$key]; // 讀取
$arr[$key] = $value; // 寫入/新增/修改
// 鍵不存在讀取 → Notice: Undefined array key (PHP 8+) / Warning (PHP 7)
// 建議先檢查:isset($arr[$key]) / array_key_exists($key, $arr)
| 函式 | 功能 | 語法 | 關鍵備註 |
|---|---|---|---|
count | 元素個數 | count($arr) | 遞迴計數 COUNT_RECURSIVE |
is_array | 型別檢查 | is_array($var) | 嚴格判斷,物件回傳 false |
print_r | 結構輸出 (可讀) | print_r($arr [, true]) | 第二參數 true 回傳字串而非輸出 |
var_dump | 完整型別/長度輸出 | var_dump($arr) | 除錯首選,含索引型別 |
explode | 字串分割成陣列 | explode(分隔字串, 字串 [, limit]) | 分隔字串不可為空字串 |
implode | 陣列合併成字串 | implode(分隔字串, $arr) | 別名 join,順序固定 |
sort | 值排序 (重建索引) | sort($arr [, flags]) | SORT_NUMERIC, SORT_STRING, SORT_NATURAL |
<html><head><meta charset="GBK"></head><body>
<h1>請輸入五個小孩成績,用空格隔開</h1>
<form action="result2.php" method="post">
<input type="text" name="grade" />
<input type="submit" value="開始統計" />
</form></body></html>
<?php
$grades = $_REQUEST['grade'];
$grade = explode(' ', $grades);
$allgrades = 0;
foreach ($grade as $k => $v) { $allgrades += $v; }
echo '平均時間:' . ($allgrades / count($grade));
?>
<html><head><meta charset="GBK"></head><body>
<h1>請輸入五個小孩成績,用空格隔開</h1>
<form action="" method="post">
<input type="text" name="grade" value="<?php echo htmlspecialchars($grades ?? '') ?>" />
<input type="submit" value="開始統計" />
</form>
<?php
error_reporting(E_ALL ^ E_NOTICE);
$grades = $_REQUEST['grade'] ?? '';
$gr = explode(' ', $grades);
$allgrades = 0;
foreach ($gr as $k => $v) { $allgrades += $v; }
$a = count($gr) ? $allgrades / count($gr) : 0;
echo '平均時間:' . round($a, 2);
?>
</body></html>
<?php
for ($i = 1; $i < 10; $i++) {
for ($k = 1; $k <= $i; $k++) {
echo "$i*$k=" . ($i * $k) . " ";
}
echo "<br />";
}
?>

<?php
$a = ['a' => 'apple', 'b' => 'banana'];
$b = ['a' => 'pear', 'b' => 'strawberry', 'c' => 'cherry'];
$c = $a + $b; // 右邊鍵名在左邊已存在者「不覆蓋」
var_dump($c);
/* 輸出:
['a'=>'apple', 'b'=>'banana', 'c'=>'cherry'] // a,b 保留左邊值
*/
$c = $b + $a; // 順序互換結果不同
var_dump($c); // ['a'=>'pear', 'b'=>'strawberry', 'c'=>'cherry']
?>
+ 運算子:聯集 (左優先),右側鍵名若在左側存在則忽略。array_merge:合併 (後覆蓋前),數字索引重排,字串鍵後者覆蓋。<?php
$arr[0] = 123; $arr[1] = 456; $arr[2] = 'hello';
echo '刪除前: ' . $arr[1]; // 456
unset($arr[1]);
echo '刪除後: ' . $arr[1]; // Notice: Undefined array key 1
print_r($arr); // [0=>123, 2=>hello] 索引 2 不變
?>
若需連續索引:$arr = array_values($arr);
<?php
error_reporting(E_ALL ^ E_NOTICE); // 生產環境建議:E_ALL & ~E_DEPRECATED & ~E_STRICT
// 或 php.ini: error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
?>
as $k => $v。sort (值排序重索引)、asort (值排序保鍵)、ksort (鍵排序)、usort (自訂比較)。+ (聯集左優)、array_merge (合併後覆蓋)、array_replace (遞迴替換)。Generator (yield) 避免記憶體爆炸。declare(strict_types=1) 搭配型別宣告捕獲傳參錯誤。掌握此手冊,PHP 陣列操作將不再有盲區。