PHPでHTMLフォームから多次元配列を受け取る方法
PHPでサーバー側のプログラムを書いていて、「HTMLから多次元配列は渡せないのかな?」と思い調べてみました。HTML側で項目のname属性を配列っぽく定義してやれば、サーバー側では$_POSTから配列として取得できることができました。
その方法を紹介します。
クライアント側(HTML)のコード
以下の様に書きます。「name=」のネーム属性の部分が要となるコードです。
<input type="checkbox" name="DicArray[1][DelChk]" value="del"> <input type="text" name="DicArray[1][DicName]" value="Std Dict"> <select name="DicArray[1][DicStat]"> <option value="enable">Enable</option> <option value="disable">Disable</option> </select> <input type="checkbox" name="DicArray[2][DelChk]" value="del"> <input type="text" name="DicArray[2][DicName]" value="IT Dict"> <select name="DicArray[2][DicStat]"> <option value="enable">Enable</option> <option value="disable">Disable</option> </select>
これがサーバー側でどう受け取られるかというと、次の様になります。
["DicArray"]=> array(2) { [1]=> array(2) { ["DicName"]=> string(8) "Std Dict" ["DicStat"]=> string(6) "enable" } [2]=> array(2) { ["DicName"]=> string(7) "IT Dict" ["DicStat"]=> string(7) "disable" } }
サーバー側(PHP)のコード
今回、この方法を紹介するにあたってサーバー側で実装したコードは次の1行だけです。
var_dump($_POST);
これはPOSTされた値を画面にダンプしただけの確認用コードですが、つまりこれから、POSTされてきたデータ($_POST 変数に格納されている)の中には既に配列形式で格納されていることが分かります。
これでサーバー再度のプログラミングがだいぶ楽になりますね。