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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

846閲覧

PHP:foreachしながら別のデータの取得方法

taktd

総合スコア10

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/10/13 01:26

前提・実現したいこと

こういう質問するのが初めてのため、乱文失礼します。
アンケートサイトの開発に携わっています。

一つのアンケート結果のデータから、テキストで記入した部分(複数ある)を
抽出して表示させるという仕様で作成しようとしています。

該当のソースコード

次のソースはアンケート結果を取得するコントローラー部分の抜粋です。

PHP

1 public function getQuestionFeedback($userId, $isUseMaintain = false) 2 { 3 if ($isUseMaintain) { 4 $idQuestion = Question::join('surveys', 'survey_id', '=', 'surveys.id') 5 ->where('surveys.survey_type', SurveyRepository::SURVEY_TYPE_AAA) 6 ->where( 7 'questions.content', 8 'LIKE', 9 SurveyRepository::COMMON_QUESTION_NUMBER['open'][SurveyRepository::SURVEY_TYPE_AAA][0] . '%' 10 ) 11 ->pluck('questions.id'); 12 } else { 13 $user = User::find($userId); 14 $idQuestion = []; 15 $idQuestion2 = []; 16 if ($user->is_show_buy && $user->company->use_bbb) { 17 $idbbb = $this->getQuestionId(SurveyRepository::SURVEY_TYPE_BBB); 18 if (!empty($idbbb)) { 19 $idQuestion[] = $idbbb; 20 } 21 $idbbb2 = $this->getQuestionId2(SurveyRepository::SURVEY_TYPE_BBB); 22 if (!empty($idbbb2)) { 23 $idQuestion2[] = $idbbb2; 24 } 25 } 26 if ($user->is_show_sell && $user->company->use_ccc) { 27 $idccc = $this->getQuestionId(SurveyRepository::SURVEY_TYPE_CCC); 28 if (!empty($idccc)) { 29 $idQuestion[] = $idccc; 30 } 31 $idccc2 = $this->getQuestionId2(SurveyRepository::SURVEY_TYPE_CCC); 32 if (!empty($idccc2)) { 33 $idQuestion2[] = $idccc2; 34 } 35 } 36 } 37 $questionResults = QuestionResult::where([ 38 'user_id' => $userId 39 ]) 40 ->whereIn('question_id', $idQuestion) 41 ->whereHas('surveyResult') 42 ->orderBy('created_at', 'DESC') 43 ->get(); 44 $questionResults2 = QuestionResult::where([ 45 'user_id' => $userId 46 ]) 47 ->whereIn('question_id', $idQuestion2) 48 ->whereHas('surveyResult') 49 ->orderBy('created_at', 'DESC') 50 ->get(); 51 52 $answers = []; 53 $sorts = SurveyRepository::sortVoiceOneByOne(); 54 $changes = $this->getChanges(); 55 foreach ($sorts as $sort) { 56 foreach ($questionResults as $questionResult) { 57 $surveyResult = $questionResult->surveyResult; 58 $surveyType = $surveyResult->survey->survey_type; 59 if ($surveyType == $sort) { 60 $answers[$surveyType][] = [ 61 'memo' => $surveyResult->memo, 62 'id' => $surveyResult->id, 63 'content' => $questionResult['answer'], 64 'date' => $questionResult['created_at']->format('Y/m/d'), 65 'type' => $surveyType, 66 'change_survey_type' => $this->getChangeSurveyType($surveyResult, $changes) 67 ]; 68 } 69 } 70 } 71 72 return $answers; 73 } 74 75

試したこと

foreach ($questionResults as $questionResult) の部分に、上段にある
$questionResults2 を割り当てて、
'content' => $questionResult2['answer']を定義すると、欲しい回答の
情報が取得できるのですが、$questionResults で情報を取得しつつ
同じタイミングで foreach しつつ(できない?)$questionResults2 からも
取得する方法をご教示いただけると幸いです。

補足情報(FW/ツールのバージョンなど)

■環境情報
PHP 7.3.8
Laravel Framework 5.7.28

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

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

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

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

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

firegrape

2020/10/13 04:19

$questionResultsと$questionResults2 の違いは、whereInのとこだけですか? そういうときは一つの配列にまとめるのが定石だと思われます。
taktd

2020/10/13 05:23

firegrapeさん はい、違いはwhereInのところだけです。 ただし別のプログラムでも使用している配列データなので 新たな配列データを作成してみて試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問