在laravel foreach循环中传递多个变量[重复]
Posted
技术标签:
【中文标题】在laravel foreach循环中传递多个变量[重复]【英文标题】:Pass multiple variables in laravel foreach loop [duplicate] 【发布时间】:2020-08-21 16:53:56 【问题描述】:所以我要做的是创建一个FAQ 手风琴,但使用@foreach 循环而不是复制和粘贴整个列表。我的控制器代码如下所示:
public function faq()
$faqs=array(
'questions' => ['question1','question2','question3'],
'answers' => ['answer1','answer2','answer3'],
'counts' => ['One','Two','Three']
);
return view('frontend.pages.faq')->with($faqs);
这是我希望达到的目标:
@foreach($questions as $question && $answers as $answer && $counts as $count)
<div id="accordion">
<div class="card card--faq mb-2">
<div class="bdv-btn card-header" id="heading$count">
<h5 class="mb-0">
<a class="btn btn-link w-100" data-toggle="collapse" data-target="#collapse$count" aria-controls="collapse$count">
$question
</a>
</h5>
</div>
</div>
</div>
<div id="collapse$count" class="collapse" aria-labelledby="heading$count" data-parent="#accordion">
<div class="card-body bg-light">
$answer
</div>
</div>
</div>
@endforeach()
如果是 $counts 变量,我不使用 $key 的原因是我希望实现一、二、三,而不是 1、2、3。
上面的代码当然是正确的。实现这一目标的最佳方法是什么?有没有可能?
【问题讨论】:
你不能真的像那样做@foreach()
。您可以执行嵌套的@foreach
循环,或@for
循环,例如@for($i = 0; $i < count($questions); $i++)
,然后$questions[$i]
将是question1
,而$answers[$i]
将是answer1
等。如果您的所有数组都有效长度相同,但我不能 100% 确定您要做什么。
是的,我想做类似的事情,我尝试了 @for
循环但出现错误。如果我使用@for
循环,$faqs 数组应该是什么样子?
几乎和你现在一样,但你的数组键不应该是变量:$questions => ['question1','question2','question3'],
应该只是'questions' => ...
:$faqs = [ 'questions' => ['question1','question2','question3'], 'answers' => ['answer1','answer2','answer3'], 'counts' => ['One','Two','Three']];
(不能真正发布代码块,但你得到这个想法。另外,不要混合语法;使用array()
或[]
,不能同时使用)
糟糕,可变部分是我将编辑的问题中的错误。是的,这可能是因为这个数组语法错误,我之前遇到了一个错误。我会尝试一下,然后让你知道它是否有效。
这能回答你的问题吗? Two arrays in foreach loop - 发现这个重复项,似乎与您遇到的相同,只是在基本 php 而不是 Laravel 中。但是逻辑是一样的:)
【参考方案1】:
你不能像这样在你的刀片中访问你的 faq 变量,因为 with 的错误使用。你应该这样做:
return view('frontend.page.faq')->with(['faqs'=>$faq]);
首先在您的控制器中执行此操作:
public function faq()
$faqs=array(
'questions' => ['question1','question2','question3'],
'answers' => ['answer1','answer2','answer3'],
'counts' => ['One','Two','Three']
);
return view(frontend.page.faq')->with(['faqs'=>$faqs]);
然后在您的刀片中,您可以像这样访问它们:
@foreach($faqs['questions'] as $question)
dd($question)
@endforeach
现在您的刀片中有常见问题解答
【讨论】:
他们不是试图访问视图中的$faqs
,而是访问$questions
、$answers
和$counts
,根据您发布的语法,这些现在都是未定义的.
修改后还是没有解决问题。是的,这是一种方法,但问题是如何对多个变量执行foreach
循环。这并不能回答这个问题。你如何同时在$faqs['questions']
、$faqs['answers']
和$faqs['counts']
上做一个foreach
?
@TimLewis 好吧,只要我知道我认为这是不可能的以上是关于在laravel foreach循环中传递多个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在PHP Laravel中将变量从foreach循环传递给我的控制器
如何在控制器传递变量(laravel)中使用刀片进行 foreach