前端表單 (request.php)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>成績計算</title>
</head>
<body>
<form action="result.php" method="post">
<label>請輸入成績(空格分隔):</label>
<input type="text" name="grade" placeholder="例如:85 90 78 92" required>
<input type="submit" value="開始計算">
</form>
</body>
</html>
後端處理 (result.php)
<?php
$grade = $_REQUEST['grade'] ?? '';
$arr = preg_split('/\s+/', trim($grade), -1, PREG_SPLIT_NO_EMPTY); // 正則分割,支援多空格/Tab
if (!$arr) {
exit('未輸入有效數字');
}
$sum = array_sum($arr);
$count = count($arr);
$avg = round($sum / $count, 2);
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "總和:$sum<br>";
echo "平均:$avg<br>";
關鍵函數說明
| 函數 | 說明 |
preg_split('/\s+/', ...) | 以任意空白字元(空格、Tab、換行)分割,PREG_SPLIT_NO_EMPTY 過濾空元素。 |
array_sum() | 陣列所有數值相加(自動轉型字串數字)。 |
round($val, 2) | 四捨五入保留 2 位小數。 |
進階:輸入驗證與錯誤處理
$numbers = [];
foreach ($arr as $v) {
if (!is_numeric($v)) {
exit("無效輸入:'$v' 非數字");
}
$numbers[] = (float) $v;
}
$sum = array_sum($numbers);
$avg = round($sum / count($numbers), 2);
安全提醒
- 使用
$_REQUEST 同時接收 GET/POST/COOKIE,建議明確用 $_POST。
- 輸出變數到 HTML 時應用
htmlspecialchars() 防 XSS(本例僅輸出數字,風險低)。
- 大量數字計算時注意浮點精度,金融場景請用
bcmath。