質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

994閲覧

PHPの連想配列からArrayを取り出す。

MasahiroKawai

総合スコア51

SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/06/15 12:40

編集2017/06/15 13:14

https://teratail.com/questions/80479

の続きです。べつの質問なので、もう一つ質問を立てました。

無事メールが飛びました。ありがとうございました。

さて、メールがとんできたら、

項目A: Array
項目B: Array

と表示されていました。

sendmail.phpを動かすと、

php

1Notice: Array to string conversion in /var/www/html/lp/sendmail.php on line 32 2 3Notice: Array to string conversion in /var/www/html/lp/sendmail.php on line 32

と表示されました。
連想配列からデータが取り出されていないことになります。
そこで、

php

1<?php 2省略 3$hogeA = $_SESSION['hogeA']; 4$hogeB = $_SESSION['hogeB']; 5省略 6$sendgrid = new SendGrid($api_key, array("turn_off_ssl_verification" => true)); 7$email = new SendGrid\Email(); 8$email->setSmtpapiTos($tos)-> 9 setFrom($from)-> 10 setFromName("送信者名")-> 11 setSubject("[申し込みが来ました] %fullname%さんから申し込みが来ました")-> 12 setText("%fullname%さん \r\n $hogeA, $hogeB")-> <- 13 setSubstitution('%fullname%', '$fullname')-> 14?>

と書くと上記のエラーがでますし、

php

1$sendgrid = new SendGrid($api_key, array("turn_off_ssl_verification" => true)); 2$email = new SendGrid\Email(); 3$email->setSmtpapiTos($tos)-> 4 setFrom($from)-> 5 setFromName("送信者名")-> 6 setSubject("[申し込みが来ました] $fullnameさんから申し込みが来ました")-> 7 setText("$fullnameさん \r\n $hogeA[], $hogeB[]")-> <- 8?>

と書くと、認識できないとエラーが出ます。また、 addSubstitutionを使って配列からとりだそうとしてもエラーになります。

confirm.phpから渡された配列からArrayの正しい値を取り出す書き方を教えてください。

ちなみに、hogeAはチェックボックで選択した物、hogeBはラジオボタンで選択したものです。

よろしくお願いします。


HTMLを追加

HTML

1 <h2>お持ちのhogeAを選択してください。</h2> 2 <div class="ui checkbox"> 3 <input type="checkbox" name="hogeA[]" id="hogeA1" value="hogeshi1" checked="checked"> 4 <label for="license1" class="step-margin">hogeshi1</label> 5 </div> 6 <div class="ui checkbox"> 7 <input type="checkbox" name="hogeA[]" id="hogeA2" value="hogeshi2"> 8 <label for="hogeA2" class="step-margin">hogeshi2</label> 9 </div> 10 <div class="ui checkbox"> 11 <input type="checkbox" name="hogeA[]" id="hogeA3" value="hogeshi3"> 12 <label for="hogeA3" class="step-margin">hogeshi3</label> 13 </div> 14 15 <h2>hogeBを選択してください。</h2> 16 <div class="ui radio checkbox"> 17 <input type="radio" name="hogeB[]" id="hogeB1" value="hogejiki1" checked="checked"> 18 <label for="hogeB1" class="step-margin">hogejiki1</label> 19 </div> 20 <div class="ui radio checkbox"> 21 <input type="radio" name="hogeB[]" id="hogeB2" value="hoegjiki2"> 22 <label for="hogeB2" class="step-margin">hogejiki2</label> 23 </div> 24 <div class="ui radio checkbox"> 25 <input type="radio" name="hogeB[]" id="hogeB3" value="hogejiki3"> 26 <label for="hogeB3" class="step-margin">hogejiki3</label> 27 </div>

CSSはSemantic-uiを一分使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/06/15 12:51 編集

チェックボックス、ラジオボタンの組み方によります。HTMLもあわせてご提示ください。まぁvar_dump()をした結果を見ながら取り出すのでもいいですが。
guest

回答3

0

var_dump() 指南 (初学者・初心者用)
http://qiita.com/ShibuyaKosuke/items/5ba8001b52843edc0fe5

連想配列,多重配列 の部分を参考にしてください。

投稿2017/06/15 13:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahiroKawai

2017/06/15 13:05

えと、ですね、単純にこれ読んで出せるんだったらもうやっています。テラテイルに書くまでもありません。[]を読み込んでくれずエラーが出ます。配列なので[]を指定すれば取り出せるのはわかっているんですが、$hogeA[]と書くとエラーになるので、困っているんです。
退会済みユーザー

退会済みユーザー

2017/06/15 13:06

添え字を書いていないからでしょ?
退会済みユーザー

退会済みユーザー

2017/06/15 13:09 編集

噛みつく前に、var_dump($_SESSION) の結果追記したらどうですかね。
m.ts10806

2017/06/15 13:12 編集

MasahiroKawaiさん。 この記事を読んで出せない方が問題がありますよ。自身のやり方が記事のやり方にそってできていないということですよ。
MasahiroKawai

2017/06/15 13:25

答えは上記の方のimplode関数で終わりました。噛み付いているんではなくて、プログラムが明らかにわかっていないバカに対してもうちょっと察してほしいなというのが本音です。不機嫌にさせてしまって申し訳ないですが、var_dump($_SESSION)は業務データなので出せませんし、既に何度もはいてこちらとしてはどうすべきか悩んでいただけなので、シンプルな答えが欲しかっただけです。
guest

0

ラジオボタンは単一選択なのでnameに[]をつけて配列にする必要はないと思いますけども。
ひとまず置いといて出すだけなら沢山あるので。

配列を連結する:join
配列をループで取り出す:foreach,for
若干コツが必要ですがwhileでも出来ますね。

お好きな方法でどうぞ。
使う機能により配列じゃない場合(NULLとかも)にエラーとなるのでその変数が配列かどうかはチェックしてから利用するようにしてくださいね。 is_array()

余談:
ひとつ苦言を呈すと、過去の質問のやり取りなどから、もう少し変数と配列と演算子の基本部分をきちんとおさえてから当該機能の実装に入られたほうが良いように思います。

投稿2017/06/15 13:20

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahiroKawai

2017/06/15 13:26

そんな余裕もなく実装しなければいけない状況というのもあるという、余裕のない零細事業者とも思ってください。
MasahiroKawai

2017/06/15 13:27

ご回答ありがとうございました。とりあえず、シンプルなものなのでimplode関数というのを使いました。
terminator

2017/06/15 13:32

https://teratail.com/help/question-tips こちらのページにも書かれていますが、「teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです」とあります。 プログラミングを習得することが目的ではなく、お金かけられないから動くものがほしいと言うのは、サイトの趣旨から外れています。回答者はあなたの経費節減のためにタダ働きするためにあるのではありません。
guest

0

ベストアンサー

$hogeAが何次の配列なのかわからないのでなんとも言えませんが
is_arrayでチェックして、foreachで回せば文字ベースのデータにまで落とすことはできます
もちろん1次の配列だとわかっているならimplodeで簡単に抜けます

投稿2017/06/15 13:09

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahiroKawai

2017/06/15 13:21

ありがとうございました。ごくシンプルな配列だったので、implode関数を使って取り出せました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問