みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メールフォームについて質問です。

php初心者です。
メールフォームのチェックボックスの値をPOSTでキャッチしたあと表示がしたいのですがうまくいきません。
他のPOSTでキャッチした値も、最終的にforeachで回しています。
チェックボックスからの値のみ「array」と出力されます。
多次元配列の値を並列に表示したい場合、どのような処理の考え方があるのか教えていただきたいです。

送信元
<form action="entry.php" method="post">
<dl>
<dt>氏名 <span class="red">[必須]</span></dt>
<dd><input type="text" name="氏名"></dd>
</dl>
<dl>
<dt>フリガナ <span class="red">[必須]</span></dt>
<dd><input type="text" name="フリガナ"></dd>
</dl>
<dl>
<dt>メールアドレス <span class="red">[必須]</span></dt>
<dd><input type="text" name="メールアドレス" style="white-space:nowrap;"></dd>
</dl>
<dl>
<dt>参加内容</dt>
<dd><input type="checkbox" value="値1" name="参加内容[]">値1</dd>
<dd><input type="checkbox" value="値2" name="参加内容[]">値2</dd>
</dl>
<dl>
<dt>個人情報保護方針 <span class="red">[必須]</span><br /><input type="checkbox" class="checkbox" name="個人情報保護方針">同意する</dd>
</dl>
<p class="contactBt"><input type="submit" value="確認ページ" /></p>
</form>



【送信先】

$_POSTSTRINGCODE = "EUC-JP";
$_THISFILESTRING = "UTF-8";
$_MYPOST = "";
foreach($_POST as $key=>$var) {
//mb_convert_variables($_THISFILESTRING, $_POSTSTRINGCODE, $key);
//smb_convert_variables($_THISFILESTRING, $_POSTSTRINGCODE, $var);
$_MYPOST[$key] = $var;
}

<dl>
<?php
unset( $_MYPOST['個人情報保護方針'] );
foreach($_MYPOST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
$var = htmlspecialchars($var);
$OUT_var = ($var == "")?'&nbsp;&nbsp;':nl2br($var);
print("<dt>".$key."</dt><dd>".$OUT_var."</dd>");
?>
<INPUT type="hidden" name="<?php echo $key ?>" value="<?php echo $var ?>">
<?php
print("</dt></dd>\n");
}
?>
</dl>

配列はこんな感じです。
array(6) {
["所属団体"]=>
string(1) "a"
["氏名"]=>
string(2) "aa"
["フリガナ"]=>
string(3) "ア"
["メールアドレス"]=>
string(15) "aaa@aaa.co.jp"
["ご参加内容"]=>
array(2) {
[0]=>
string(51) "値1"
[1]=>
string(15) "値2"
}
["個人情報保護方針"]=>
string(2) "on"
}

このまま表示させると「array」として表示されてしまうため「値1」「値2」の値を表示
させるためループ内で色々やってみましたが、考え方自体少しつかめていません。
 
【現状】

所属団体
a
氏名
aa
フリガナ

メールアドレス
aaa@aaa.co.jp
ご参加内容
Array
(この場所に「値1」「値2」が表示させるようにしたいです)

どなたかご教授いただければと思います。
よろしくおねがいいたします。

投稿日時 - 2013-04-02 22:37:47

QNo.8024332

困ってます

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

配列の要素が配列だったときにどう扱うかというだけの問題ですよね?

深くなる場合には再帰なども使いますが今回の$_POSTの配列は最大でも二次元配列までと既知ですから、配列だったら値をimplodeしてしまえばいいのでは?

foreach($_POST as $key=>$var) {
if (is_array($var)) {
$_MYPOST[$key] = implode(',', $var);
} else {
$_MYPOST[$key] = $var;
}
}

投稿日時 - 2013-04-03 13:53:22

お礼

このサイトの使い方が分からずお礼もせぬまま放置してしまいました。
申し訳ありません。
アドバイスありがとうございました!
おかげで解決することが出来ました!

投稿日時 - 2014-01-07 20:16:50

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問