作成日:2006/05/23
2B.3 フォーム変数での配列の使用
PHPではフォーム要素名にPHPの配列を使用する事が可能です。 この手法は以下のような場合に使用します。
- 関連するフォーム要素をクループ化する場合
- 複数選択可能なselect要素の値を取得する場合
| シナリオ | 用例 |
|---|---|
| テキストボックスの 配列 |
<form> arr <input type="text" name="arr[]" value="a"><br> arr <input type="text" name="arr[]" value="b"><br> arr <input type="text" name="arr[]" value="c"><br> <input type="submit"> </form> <?php print_r($_GET['arr']) ?> // [送信]ボタンを押すと Array ( [0] => a [1] => b [2] => c ) を出力します。 // ※ テキストが未入力の場合も配列要素は作成されます。 |
| チェックボックスの 配列 |
<form> <input type="checkbox" name="chk[]" value="1" checked>Item1<br> <input type="checkbox" name="chk[]" value="2" checked>Item2<br> <input type="checkbox" name="chk[]" value="3">Item3<br> <input type="submit"> </form> <?php print_r($_GET['chk']) ?> // [送信]ボタンを押すと Array ( [0] => 1 [1] => 2 ) を出力します。 // ※ 未チェックの配列要素は作成されません。 // ※ 全て未チェックの場合はフォーム変数自体が送信されません。 |
| 複数選択可能な select要素 |
<form> <select name="sel[]" multiple> <option value="1" selected>Item1</option> <option value="2" selected>Item2</option> <option value="3" >Item3</option> </select><br> <input type="submit"> </form> <?php print_r($_GET['sel']) ?> // [送信]ボタンを押すと Array ( [0] => 1 [1] => 2 ) を出力します。 // ※ 配列でない変数名を使用すると最後の値しか取得できません。 // ※ 全て未チェックの場合はフォーム変数自体が送信されません。 |
| JaveScriptからの アクセス |
// フォーム要素にPHPの配列を使用した場合、
// その要素をクライアントサイドのJavaScriptでアクセスするには
// 要素名をシングルクォートで囲みます。
function OnCheck(){
var arr = new Array();
for(i=0; i< document.forms[0].elements['arr[]'].length; i++){
arr[i] = document.forms[0].elements['arr[]'][i].value;
}
alert(arr);
}
・・・
<form>
arr <input type="text" name="arr[]" value="a"><br>
arr <input type="text" name="arr[]" value="b"><br>
arr <input type="text" name="arr[]" value="c"><br>
<input type="submit">
</form> |
