復選框的 name 屬性必須以 [] 結尾,PHP 才會自動將其解析為數組:
<form method="post" action="checkbox.php">
<input type="checkbox" name="colors[]" value="red"> 紅色
<input type="checkbox" name="colors[]" value="green"> 綠色
<input type="checkbox" name="colors[]" value="blue"> 藍色
<input type="submit" value="提交">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 直接獲取數組,若未勾選則為 null
$selected = $_POST['colors'] ?? [];
// 安全過濾
$selected = array_map('htmlspecialchars', $selected);
echo "您選擇了:" . implode('、', $selected);
// 或逐個處理
foreach ($selected as $color) {
// 業務邏輯...
}
}
?>
$allowed = ['red', 'green', 'blue', 'yellow'];
$selected = array_intersect($_POST['colors'] ?? [], $allowed); // 白名單過濾
if (empty($selected)) {
throw new Exception('請至少選擇一項');
}
$_POST['colors'] 不會存在,直接訪問會報 Notice,務必用 ?? [] 或 isset() 判斷。name="item[]" 保持數組結構,前後端處理統一。<input type="checkbox" name="x[]" value=""> 會傳遞空字符串,建議賦予有意義的值。