• 締切済み

foreachの値をメール本文に表示させたい

はじめまして。どうしても困ってしまったので、ご教授願えれば思い質問させていただきます。 チェックボックスを使ったメールフォームで流れは、hearing1.html→hearing1_check.php→hearing1_finish.phpという流れです。 最後のhearing1_finish.phpまでは、foreachを使いデータを保持できたのですが、その値をメール本文に挿入するところで躓いています。スクリプトは ******************************* foreach($closed as $line1){ $closed .= $line1; } ******************************* と値を連結し、メール本文の ******************************* $body_guest = " 定休日:$closed "; ******************************* で表示させ、 ********************************************************* if (mb_send_mail($email,$title_guest,$body_guest,"From:order@******.com")){ $show_finish = $mail_complete; }else{ $show_finish = $mail_fail; } ********************************************************* でメール送信したいと思っています。メールは値も表示できたのですが、 *********************** 定休日:array(月 火 水) *********************** となってしまい、array()の部分を取り除く方法を教えていただけないでしょうか?よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

array()の部分を取り除く方法を考えるよりも、 foreach($closed as $line1){ $closed .= $line1; } このループ処理の内容を修正した方がよいかと思います。 今の状態では配列$closedを文字列(すなわち"array")として扱って、それに配列$closedの要素を連結していく処理です。 もうひとつ変数を用意してそれに配列の要素を連結させていって、メール本文に表示させるのがよりよいのではないかと思います。

関連するQ&A

  • smartyのforeachの使い方

    仮に$strが以下のような配列を持っている場合smartyのtpl側で 出力させたいのですがうまくいきません。 Array ( [0] => Array ( [id] => 1 [name] => 名前 [sub_id] => Array ( [0] => 12 [1] => 13 ) [sub_name] => Array ( [0] => あああ [1] => いいい ) [sub_cnt] => Array ( [0] => 5 [1] => 5 ) ) [1] => Array ( [id] => 1 [name] => 名前 ) ) sub_***は配列が存在するものとしないものがあります。 そしてtpl側は {foreach item=items from=$str} <ul id="side{$items.id}"> {foreach item=item from=$items} <li><a href="index.php?id={$item.sub_id}">{$item.sub_name} ({$item.sub_cnt})</a></li> {/foreach} </ul> {/foreach} とforeachを重ねてみたのですがsub_***の値が表示されない 状態です。 複雑な配列なのですがこの場合どうすればうまく表示させれるの でしょうか?

    • ベストアンサー
    • PHP
  • PHP foreachを使ってループしたい

    こんばんは。 PHPで複数の宛先でメールを送信したいと思っております。 そこでメールフォームでまず mail.php foreach ($arr as $value) { print'<input type="hidden" name="mail[]" value="'. $value .'">'; } f-mail.php $_POST['mail']で取得しそれを$valとして、print_r($val);で表示すると Array ( [0] => アドレスA [1] =>アドレスB ) と表示されます。 その複数のアドレスを //PEAR::MailCu require_once '/Mail.php'; //PEAR::Mail_mimeCu require_once '/mimeDecode.php'; //送信データを設定する $recipients= $val; $new_from = 'hoge@hoge.com'; $subject = mb_encode_mimeheader(mb_convert_encoding("$subject1", "JIS", "auto"), "JIS"); $body =$body1; //メールを送信する $headers = array(); $headers['From'] = $new_from; $headers['To'] = $recipients; $headers['Subject'] = $subject; $headers['Sender'] = $new_from; $mail = Mail::factory('sendmail'); $result = $mail->send($recipients, $headers, $body); ・LoopでToを変更しながら繰り返し送信する事がしたいのですがforeachでどう設定していいかわかりません。マニュアルもみたのですが、混乱してしまったので ご指導、ご教授のほど宜しくお願い致します。

    • 締切済み
    • PHP
  • smartyのforeachの使い方?

    smartyについて教えてください。 mysqlのデータを繰り返し表示させたいのですが Warning: htmlspecialchars() expects parameter 1 to be string, array given in パス modifier.escape.php on line 26 とエラーが出てしまい動作しません。 foreachの使い方がおかしいのかと思いマニュアルをみてみたのですが わかりませんでした。 どうすれば繰り返し表示できるようになるでしょうか? ---php--- $i = 0; $list = array(); while ($col = mysql_fetch_array($res, MYSQL_ASSOC)) { $list[$i]['id'] = $col[id]; $list[$i]['title'] = $col[title]; $list[$i]['main'] = $col[main]; $i++; } $smarty->assign('list', $list); ---tpl--- {foreach item=list from=$list} <tr> <td>{$list.id}</td> <td>{$list.title}</td> <td>{$list.main}</td> <td><a href="hoge.php?id={$list.id}">a</a></td> <td><a href="hoges.php?id={$list.id}">a</a></td> </tr> {/foreach}

    • ベストアンサー
    • PHP
  • PHP foreach文

    PHPのforeach構文なのですが以下ソースコードの13行目、foreach文の中の「$juice」なのですが、どこから出てきた物なのでしょうか? 今PHPの参考サイトを見ながら学習という形をとっているのですが 「$juice」が何処から出てきた物かわかりません。 サブライムテキストのラインハイライトで掛けても見つからなかったので... 参考URL http://creive.me/archives/8719/ <html> <head><title>accesslog.php</title></head> <body> <?php $fruits_juice = array( 'orange' => 'orange juice', 'melon' => 'melon juice', 'grape' => 'grape juice', 'banana' => 'banana juice', 'strawberry' => 'strawberry juice' ); foreach ($fruits_juice as $fruit => $juice) { echo $fruit . "(果物) => " . $juice . "(ジュース)<br>"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • phpでツリー表示

    表題の通り、phpをもちいてツリー表示をしたいと思っています。 そこで、下記のコードの実行結果は以下の通りなのですが、 【このように実行結果を変えたい】のように表示したいと考えています。 どのようにコードを書きかえれば、実行できるでしょうか? 【コード】 <?php function put_tree($no, $line, $broths, $childs, $texts) { echo '<span class="line">' . $line . '</span>'; echo '▼[' . $no . ']' . $texts[$no] . '<br>'; $line = preg_replace('/├$/', '│', $line); $line = preg_replace('/└$/', ' ', $line); $no = isset($childs[$no]) ? $childs[$no] : 0; while ($no > 0) { $tail = $broths[$no] ? '├' : '└'; put_tree($no, $line . $tail, $broths, $childs, $texts); $no = $broths[$no]; } } ?> <html> <head> <title>ツリー表示</title> <style> .line { font-family: "MS ゴシック", monospace; } </style> </head> <body> <?php $logs = array( array(1, 0, 'あああああ'), //記事番号・親記事番号・記事内容 array(2, 1, 'いいいいい'), array(3, 1, 'ううううう'), array(4, 2, 'えええええ'), array(5, 3, 'おおおおお'), array(6, 3, 'かかかかか'), array(7, 0, 'ききききき'), array(8, 6, 'くくくくく'), array(9, 8, 'けけけけけ'), array(10, 7, 'こここここ') ); $roots = array(); $broths = array(); $childs = array(); $texts = array(); foreach ($logs as $log) { list($no, $pno, $text) = $log; if ($pno == 0) { $roots[] = $no; } else { $broths[$no] = isset($childs[$pno]) ? $childs[$pno] : 0; $childs[$pno] = $no; } $texts[$no] = $text; } rsort($roots); foreach ($roots as $root) { put_tree($root, '', $broths, $childs, $texts); } ?> </body> </html> 【実行結果】 ▼[7]ききききき └▼[10]こここここ ▼[1]あああああ ├▼[3]ううううう │├▼[6]かかかかか ││└▼[8]くくくくく ││ └▼[9]けけけけけ │└▼[5]おおおおお └▼[2]いいいいい  └▼[4]えええええ 【このように実行結果を変えたい】 ▼[1]あああああ ├▼[3]ううううう │├▼[6]かかかかか ││└▼[8]くくくくく ││ └▼[9]けけけけけ │└▼[5]おおおおお └▼[2]いいいいい  └▼[4]えええええ ▼[7]ききききき └▼[10]こここここ

    • 締切済み
    • PHP
  • 多次元配列で、foreachを使って、key値を

    多次元配列で、foreachを使って、key値を入れ替えているのですが、 なんで、こうなるか分かりません。  $x = array();  $x[] = array(   "id" => 1,   "name" => "JavaScript",  );  $x[] = array(   "id" => 5,   "name" => "PHP",  );  $z = array();  foreach($x as $key => $value){   $z[$value["id"]] = $value;   }  print_r($z); 配列のKEYをIDに変更しているのですが、 なんで、こうなるのでしょうか? 特に、  $z[$value["id"]] = $value; が分かりません。 例えば、foerachの途中で、var_dumpすると、 1回目だと、 ◆$key 0 ◆$value Array (  [id] => 1  [name] => JavaScript ) ◆$value["id"] 1 まではいいのですが、 ◆$z[$value["id"]] の値が見れません。 ここはどんな処理をやっているのでしょうか?

    • ベストアンサー
    • PHP
  • phpでcsvデータをランダム表示について

    下記はcsvデータをランダムに1つだけ抽出するphpのプログラムですが、1度表示したデータに色をつけるとか、表示させない方法はありますか? <!doctype html> <html> <head> <meta charset="UTF-8"> <title>無題ドキュメント</title> </head> <body> <?php // 抽出数 $count = 1; $list = array(); // 読み込みCSVファイル $lines = file('test.csv'); shuffle($lines); foreach ($lines as $line) { if ( ! in_array($line, $list)) { array_push($list, $line); if (count($list) >= $count) { break; } } } // CSVファイルに出力 $file = fopen('test2.csv', 'w'); foreach ($list as $l) { echo $l.'<br>'; if ($file) { fputs($file, $l); } } fclose($file); ?> </body> </html>

    • ベストアンサー
    • PHP
  • foreachの使い方

    ------------------------------------------- include.php <?php $kakaku = array(1=>'300', 2=>'500' ); $picture = array(1='img/pan.jpg', 2='img/choko.jpg' ); ?> ------------------------------------------- index.php <table border="1" height="188" width="461"> <tr> <td width="458" height="160"><img border="0" src="<?php echo $picture ;?>" width="190" height="157"> <font size="4" color="#FF00FF"><b><?php echo $kakaku ;?></b></font></td> </tr> </table> -------------------------------------------- この時に <tr> <td width="458" height="160"><img border="0" src="<?php echo $picture ;?>" width="190" height="157"> <font size="4" color="#FF00FF"><b><?php echo $kakaku ;?></b></font></td> </tr> の部分を変数の値の分だけ繰り返したい時、 <?php foreach($picture AS $key => $val) { ?> <? } ?> <?php foreach($kakaku AS $key => $val) { ?> <? } ?> はどう記述したらいいのですか?? 結果的には <table border="1" height="188" width="461"> <tr> <td width="458" height="160"><img border="0" src="img/pan.jpg" width="190" height="157"> <font size="4" color="#FF00FF"><b>300円</b></font></td> </tr>  <tr> <td width="458" height="160"><img border="0" src="img/choko.jpg" width="190" height="157"> <font size="4" color="#FF00FF"><b>500円</b></font></td> </tr> </table> というふうにしたいのです! よろしくお願いします。

    • ベストアンサー
    • PHP
  • foreach のバグでしょうか。PHP 5.3.3 で悩んだところが

    foreach のバグでしょうか。PHP 5.3.3 で悩んだところがあります。 あるレコードが正規表現にマッチした場合、そのレコードに対して何らかの処理をするスクリプトを書いていました。 しかし思ったように動かず原因を調べました。結果、配列の値が変わっていることに気づきました。  ◇テスト用レコードの内容   http://www.yahoo.co.jp/   http://www.bing.com/   http://www.goo.ne.jp/   http://www.google.co.jp   http://d.hatena.ne.jp/  ◇先頭一致して欲しい文字列   http://www.google.co.jp/   http://www.bing.com/   http://www.youtube.com/  この場合、処理の対象は2件です。  私が書いたスクリプトでは3回マッチしてしまいます。  以下、テスト用に作ったスクリプトです。 <?php // URL のパターンを用意 (とりあえず以下の3パターン) $ar = array(); $ar['Google'] = array(  'URL' => 'http://www.google.co.jp/' ); $ar['Bing'] = array(  'URL' => 'http://www.bing.com/' ); $ar['YouTube'] = array(  'URL' => 'http://www.youtube.com/' ); // 先頭一致の正規表現にする foreach($ar as $key => &$value){  $value['regex'] = '/^' . preg_quote($value['URL'], '/') . '/'; } echo("URL の パターンを出力してみる/n"); print_r($ar); // テスト用 レコード $list = array(); $list[] = 'http://www.yahoo.co.jp/'; $list[] = 'http://www.bing.com/'; // match. $list[] = 'http://www.goo.ne.jp/'; $list[] = 'http://www.google.co.jp/'; // match. $list[] = 'http://d.hatena.ne.jp/'; // マッチするのは2回のみ...のはずが for($n = 0; $n < count($list); $n ++){  foreach($ar as $key => $value){   if(preg_match($value['regex'], $list[$n], $match)) echo("match.\n");  } } echo("もう一度 URL のパターンを出力してみる\n"); print_r($ar); echo("なぜか一番最後の配列の値が変わっている。\n"); ?>

    • ベストアンサー
    • PHP
  • arrayである値を持った要素のみを削除するすっきりした方法。

    PHP4で,ある値を持った要素のみを削除したarrayをかえしたいのですが,たとえば,[d]と[e]をいう値をもった要素を削除したい場合, $a = array("a", "b", "c", "d", "e"); $eraseitem = array("d", "e"); $new_a = array(); foreach($a as $value); { if (!in_array($value, $erasesitem)) { $new_a[] = $value; } } とすれば,削除できますが,ほかに何かいい方法はないでしょうか。(デフォルトの関数などを使用してすっきりとできないのでしょうか。) 詳しい方,よろしくお願いします。

    • ベストアンサー
    • PHP