• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:formの情報を連想配列に)

PHPのフォーム情報を連想配列に格納する方法

このQ&Aのポイント
  • PHPのフォーム情報を連想配列に格納する方法について教えてください。
  • 具体的なフォームは、東京、神奈川、千葉の3つにチェックが入った場合の値を格納する方法が知りたいです。
  • 単純にarray_pushを使用して連想配列に値を追加しようとしましたが上手くいきませんでした。どのようにすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こういう場合常套手段としてnameに[]をつけることが多いですね。 なおエスケープの問題がめんどうなのでヒアドキュメントを使用するといいですね <?PHP $list = array("tokyo"=>"東京","kanagawa"=>"神奈川","chiba"=>"千葉","saitama"=>"埼玉","ibaragi"=>"茨城"); $str=""; foreach($list as $key => $val){ $str.=<<<eof <input type="checkbox" value="{$key}" name="data[]" id="check_{$key}"><label for="check_{$key}">{$val}</label><br> eof; } $str=<<<eof <form method="GET"> $str <input type="submit" value="送信"> </form> eof; print $str; if($_GET["data"]) print_r($_GET["data"]); ?>

oosaka2000
質問者

お礼

nameが同じだとダメなんですね!勉強になりました~ わざわざありがとうございました。

その他の回答 (2)

回答No.2

□東京 □神奈川 □千葉 □埼玉 □茨城 [ 送信 ] この部分のソースを書いてもらえるでしょうか? チェックボックスのnameが同じになっている気がします。

oosaka2000
質問者

補足

nameが同じだとダメなのですか??初心者ですいません。 ソースは $list = array("tokyo"=>"東京","kanagawa"=>"神奈川","chiba"=>"千葉","saitama"=>"埼玉","ibaragi"=>"茨城"); echo "<form method=GET>"; foreach($list as $key => $val){  echo "<input type=checkbox value={$key} name=data>{$val}<br>"; } echo "<input type=submit value=\"送信\"></form>"; $data[] = $_GET[data]; です。

回答No.1

formからpostやgetでsubmitされた値は自動的に連想配列に格納されます。 print_r($_POST)で表示できるはずです。 Array ( [0] => tokyo [1] => kanagawa [2] => chiba ) これは連想配列ではなく、普通の配列ではないでしょうか?

oosaka2000
質問者

補足

配列でした、失礼しました。 3つ選択してsubmitしても結果は Array ( [0] => chiba ) となるのですが、なぜでしょうか??

関連するQ&A