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

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

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

サンプル・プログラム

解説:前処理

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

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

0049: //選択肢
0050: $questions = array('PHP', 'Ruby', 'Perl', 'Java',
0051:     'JavaScript', 'VisualBasic', 'VisualC++', 'VisualC#');
0052: 

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

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

0080:     $i = 0;
0081:     foreach ($questions as $val) {
0082: echo <<< EOT
0083: <input type="checkbox" name="items[{$i}]" value="{$val}" />
0084: {$val}<br />
0085: 
0086: EOT;
0087:     $i++;
0088:     }

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

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

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

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