在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 &lt; count($questions); $i++),然后$questions[$i] 将是question1,而$answers[$i] 将是answer1 等。如果您的所有数组都有效长度相同,但我不能 100% 确定您要做什么。 是的,我想做类似的事情,我尝试了 @for 循环但出现错误。如果我使用@for 循环,$faqs 数组应该是什么样子? 几乎和你现在一样,但你的数组键不应该是变量:$questions =&gt; ['question1','question2','question3'], 应该只是'questions' =&gt; ...:$faqs = [ 'questions' =&gt; ['question1','question2','question3'], 'answers' =&gt; ['answer1','answer2','answer3'], 'counts' =&gt; ['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

我们如何在 laravel php 刀片模板中为 foreach 循环定义循环变量

Laravel 7:foreach 循环中未定义的变量

Laravel's Blade 中的循环变量

Laravel将变量传递给多选下拉数组到字符串转换错误