在 PHP 處理表單提交時,若多個核取方塊使用相同的 name 屬性,預設只會取得最後一個被勾選的值。要正確獲取所有被勾選的值,關鍵在於 HTML 表單的 name 屬性必須使用陣列語法(加上 [])。
1 2 3 4 5
關鍵點:name="frm_tag[]" 的方括號告訴 PHP 將同名欄位視為陣列處理。
$value) {
echo $value . "
";
if ($index === 0) {
$str_tag = $value;
} else {
$str_tag .= "," . $value;
}
}
echo $str_tag; // 輸出:1,2,3,4,5(依勾選項目而定)
?>
implode(',', $frm_tag) 可快速產生 IN (1,2,3) 格式字串。array_map('intval', $frm_tag) 確保皆為整數,防止 SQL 注入。$_POST['frm_tag'] 不會被設定,使用 ?? [] 或 isset() 判斷可避免 Undefined array key 警告。掌握陣列式命名慣例,即可輕鬆處理多核取方塊、多選下拉選單等表單元素的批量資料接收。