チェックボックスを使ってpostした際、Undefined array keyが出る。エラーが出るときは、すべてのチェックボックスにチェックが入っていない時。なにかしらチェックボックスにチェックが入っていなければ、エラーは出ない。
【Undefined array key】エラーの原因は、配列から存在しないkeyを指定した時に起こる現象。配列が空の場合も出る。
改善するには、
if(isset(配列キー)){ 配列キーがあった場合の処理; }
上記コードを組む事で、空の場合は出力しないという条件式が成り立ち、エラーが改善される。
入力画面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル</title>
</head>
<body>
<h2>Q1 好きな動物は?</h2>
<form action="confirm.php" method="post">
<input type="checkbox" name="animal[]" value="いぬ">いぬ
<input type="checkbox" name="animal[]" value="ねこ">ねこ
<input type="checkbox" name="animal[]" value="ラクダ">ラクダ
<h2>Q2 好きなブロックは?</h2>
<input type="checkbox" name="block[]" value="ダイヤモンド">ダイヤモンド
<input type="checkbox" name="block[]" value="古代の残骸(瓦礫)">古代の残骸(瓦礫)
<input type="checkbox" name="block[]" value="金">金
<input type="submit" value="送信">
</form>
</body>
</html>
出力(確認)画面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル</title>
</head>
<body>
<?php
if(isset($_POST['animal'])){
$_SESSION['animal'] = $_POST['animal'];
foreach($_SESSION['animal'] as $val){
echo $val."<br>";
}
}else{
echo "動物の答えは未選択!"."<br>";
}
if(isset($_POST['block'])){
$_SESSION['block'] = $_POST['block'];
foreach($_SESSION['block'] as $val2){
echo $val2."<br>";
}
}else{
echo "ブロックの答えは未選択!";
}
?>
</body>
</html>
コメント