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 変数に格納されている)の中には既に配列形式で格納されていることが分かります。

これでサーバー再度のプログラミングがだいぶ楽になりますね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です