PHP | HTMLのフォームから送信する値を配列、多次元配列として送受信する方法
HTMLのフォームから送信する値を配列としてPHPに送信、受信する方法の紹介です。
フォームからのデータ送信(HTML)と受信(PHP)
フォームは以下の様に、名前や本文などの情報毎に「name」属性をPHPに送信した際の変数名と合わせて記述することも多いですが、送信する情報量が増えてくると各々、PHP側で $_GET または $_POST を指定していく処理の記述も増えていってしまいます。
※ PHP8から $_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'] = filter_input(INPUT_POST, 'name');
$data['text'] = filter_input(INPUT_POST, 'text');
配列として送信(HTML)、受信(PHP)する方法
HTML側の「name」属性は、配列式に記述することが可能なので、[]で囲った中に配列のキー名を記述しておくことでひとつの変数名で複数のデータを送信することができます。
サンプルではdata[キー名]としていますので、PHP側では $_POST['data’] をひとつ記述するだけで複数のフォームデータを一括で受け取る事が可能になります。
注意点として、HTMLでのキー名はクォーテーションで囲わずに記述するという部分です。
※ PHP8から $_GET や $_POST でのパラメータ受け取りについて未定義エラーが発生するようになりましたので、対応した内容に修正しています。
<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 = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
連番、多次元配列として送信(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 = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
ディスカッション
コメント一覧
まだ、コメントがありません