PHP | HTMLのフォームから送信する値を配列、多次元配列として送受信する方法

PHP,PHP フォーム

PHP | HTMLのフォームから送信する値を配列、多次元配列として送受信する方法

HTMLのフォームから送信する値を配列としてPHPに送信、受信する方法の紹介です。

フォームからのデータ送信(HTML)と受信(PHP)

フォームは以下の様に、名前や本文などの情報毎にname属性をPHPに送信した際の変数名と合わせて記述することも多いですが、送信する情報量が増えてくると各々、PHP側で$_GET()または$_POSTを指定していく処理の記述も増えていってしまいます。

<form action="" method="POST">
	<p><input type="text" name="name" size="25" value=""></p>
	<textarea name="text" cols="100" rows="5"></textarea></p>
	<p><input type="submit" value="送信"></p>
</form>
$data['name'] = $_POST['name'];
$data['text'] = $_POST['text'];

配列として送信(HTML)、受信(PHP)する方法

HTML側のname属性は、配列式に記述することが可能なので、[]で囲った中に配列のキー名を記述しておくことでひとつの変数名で複数のデータを送信することができます。

サンプルではdata[キー名]としていますので、PHP側では$_POST['data’]をひとつ記述するだけで複数のフォームデータを一括で受け取る事が可能になります。

注意点として、HTMLでのキー名はクォーテーションで囲わずに記述するという部分です。

<form action="" method="POST">
	<p><input type="text" name="data[name]" size="25" value=""></p>
	<textarea name="data[text]" cols="100" rows="5"></textarea></p>
	<p><input type="submit" value="送信"></p>
</form>
$data = $_POST['data'];

連番、多次元配列として送信(HTML)、受信(PHP)する

また、HTML側のキー名を空にすることで、ひとつのname属性で複数の値を送信することも可能です。
例えばタグや趣味など複数の入力を求めるフォームの場合などに有効です。

以下サンプルの様に多次元配列として、データを送信することも可能となっています。

<form action="" method="POST">
	<p><input type="text" name="data[name]" size="25" value=""></p>
	<p><input type="text" name="data[tag][]" size="25" value=""></p>
	<p><input type="text" name="data[tag][]" size="25" value=""></p>
	<p><input type="text" name="data[tag][]" size="25" value=""></p>
	<textarea name="data[text]" cols="100" rows="5"></textarea></p>
	<p><input type="submit" value="送信"></p>
</form>
$data = $_POST['data'];

PHP,PHP フォーム

Posted by Yousuke.U