0 レビュー
3 回答
php-配列に要素を追加するLaravel5が機能しない
テーブルの質問から配列を取得しています
$questions = Category::where('slug', $slug)->first()->questions->toArray();
次に、foreachを使用して、配列を反復処理し、以下のように各反復中に配列要素をプッシュします
foreach ($questions as $question) {
$question['options'] = Option::where('question_id', $question['id'])->get()->toArray();
}
理想的には、以下のような応答が得られるはずです
array (size=5)
0 =>
array (size=6)
'id' => int 1
'category_id' => int 1
'questions' => string 'The ozone layer restricts' (length=25)
'answer_id' => int 4
'image_path' => string '' (length=0)
'options' =>
array (size=4)
0 =>
array (size=3)
...
1 =>
array (size=3)
...
2 =>
array (size=3)
...
3 =>
array (size=3)
...
1 =>
array (size=6)
'id' => int 2
'category_id' => int 1
'questions' => string 'Ecology deals with' (length=18)
'answer_id' => int 10
'image_path' => string '' (length=0)
'options' =>
array (size=4)
0 =>
array (size=3)
...
1 =>
array (size=3)
...
2 =>
array (size=3)
...
3 =>
array (size=3)
...
しかし実際には、質問配列にオプションキーを取得していません
わからない
0
レビュー
答え :
解決策:
ここでの問題は、foreachを実行するときに、値で配列を参照していることです。つまり、内部でPHPはコピーを作成します。配列内の変数。必要なのは、参照によってforeachの各要素にアクセスすることです( $q
の横にある&
に注意してください)
foreach($q uestions as & $q){
$q ['options'] = Option :: where('question_id'、'='、$q ['id'])-> get()-> toArray();
}
参照: 参照による受け渡しとforeachのPHPドキュメント。
注:これは実際にはLaravelの問題ではなく、PHPだけです。
わからない
0
レビュー
答え :
解決策:
これを試してください(&foreachで):
foreach ($questions as & $question) {
$question['options'] = Option::where('question_id', $question['id'])->get()->toArray();
}
わからない
0
レビュー
答え :
解決策:
試すことができます:
foreach ($questions as $key=>$question) {
$questions[$key]['options'] = Option::where('question_id',$question['id'])->get()->toArray();
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。