戻る

複数のテキストボックスの入力値を配列で調べる

$_POST、$_GET、foreach

それぞれは独立しているけれど、類似した内容を入力するテキストボックスを複数配置したい場合があります。この場合、各テキストボックスのname属性を配列にすることによって、受け取り側もその入力値を配列として処理できます。

この例では、HTMLフォームにおいて4つのテキストボックスを「inputdata[]」という名前で定義しています。インデックスを指定しないため、上から順番に0、1、2、3…というインデックスが自動的に振られます。受け取り側では、foreach構文を使って配列内のすべてのデータを順番に取り出します。これによって、個々のテキストボックスの入力値を取得しています。この例の方法は、テキストボックスの数が増減した場合でもソースの変更が簡単ですむというメリットがあります。受け取り側は通常の配列として扱えるので、直接インデックスを指定して個々のデータを取得することもできます。

なお、この方法はチェックボックスでは使えません。チェックボックスではチェックがついていないと変数が未定義状態になるため、チェックマークの付いた数だけの配列しか渡されないからです。

最初の画面で、4つのテキストボックスにテキストを入力して「送信」をクリックすると、各テキストボックスに入力した内容が表示されます。

<?php
header("Content-type: text/html; charset=utf-8");

if(isset($_POST["btnExec"])){
	
	import_request_variables("PG", "rcv_");
	
	$num = 1;
	foreach($rcv_inputdata as $data){
		echo $data . "<br>";
		$num++;
	}
	echo "<br><<br>";
}
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
テキストボックスに値を入れて「送信」ボタンをクリックしてください(複数入力可)。
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
	<input type="text" name="inputdata[]"><br>
	<input type="text" name="inputdata[]"><br>
	<input type="text" name="inputdata[]"><br>
	<input type="text" name="inputdata[]"><br>
	<input type="submit" name="btnExec" value="送信">
</form>
</body>
</html>

inserted by FC2 system