PHP $_POST Undefined array keyエラーの原因・改善方法

チェックボックスを使って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>

コメント

タイトルとURLをコピーしました
inserted by FC2 system