PHPでチェックボックスを配列のように扱う

(1/1)
Webアンケートなどの複数選択肢として、よくチェックボックスが使われる。
PHPには、複数選択されたチェックボックスを配列として扱う機能がある。この機能を利用することで、プログラムを簡素化することができる。

(2021年4月4日)PHP8対応,リファラチェック追加

サンプル・プログラム

解説:前処理

まず、質問項目を配列変数 $questions に代入しておく。

プログラムは、チェックボックスを選択する指定する部分と、選択肢を一覧表示する部分の2つに分かれる。例によって、変数 $_POST に渡された内容によって、2つのプログラムを切り替えることができるようにしてある。

  49: //選択肢
  50: $questions = array('PHP', 'Ruby', 'Perl', 'Java',
  51:     'JavaScript', 'VisualBasic', 'VisualC++', 'VisualC#');
  52: 

解説:チェックボックスの表示

チェックボックスの表示だが、配列変数 $questions の内容を逐次表示するだけである。
ここで注意してほしいのは、HTML の <input type="checkbox"> タグname 属性item[*] という配列変数のような文字列を設定していることである。これを行うことで、PHPから配列変数として扱えるようになる。

  80:     $i = 0;
  81:     foreach ($questions as $val) {
  82: echo <<< EOT
  83: <input type="checkbox" name="items[{$i}]" value="{$val}" />
  84: {$val}<br />
  85: 
  86: EOT;
  87:     $i++;
  88:     }

サンプル・プログラムの解説:選択結果の表示

次に、選択結果の表示である。
チェックボックスの内容は、POST メソッド で送信され、配列変数 $_POST["items"] に格納されている。これは、送出側の name 属性item[*] にしたおかげである。
あとは、foreach 構文 を使い、わずか1行で選択肢の内容を取り出すことができる。

 103: foreach ($items as $val)    echo htmlspecialchars($val. "<br />\n";
 104: 

このテクニックはいろいろな応用がきく。ぜひ覚えておいていただきたい。
(この項おわり)
header