如何从 php 中的 foreach 循环中删除重复值

How to remove repetitive values from foreach loop in php

您好我有一系列的部分,与该部分相关的问题如下所示

然后我遍历该数组并将内容输出到屏幕这里是代码

 @foreach($sections as $section)
                    <div class="form-group">
                        <h2>{{ $section['section_name'] }}</h2>
                        <p>{{ $section['section_description'] }}</p>
                        <p>{{ $section['section_intro'] }}</p>
                    </div>
                    <div class="form-group ms-5">
                        @foreach($section['question'] as $question)
                            <h5>{{ $question['question_name'] }}</h5>
                            <p class="ms-3">{{ $question['question_description'] }}</p>
                        @endforeach
                    </div>
                @endforeach

结果是这样的

我怎样才能删除这个重复项question_name我只希望它写一次,例如,它写一个关键合同和下面的两个 question_description 给所有的人?

 @foreach($sections as $section)
     <div class="form-group">
         <h2>{{ $section['section_name'] }}</h2>
         <p>{{ $section['section_description'] }}</p>
         <p>{{ $section['section_intro'] }}</p>
     </div>
     <div class="form-group ms-5">
         @php
             $questions = [];
             foreach($section['question'] as $question){
                 $questions[$question['question_name']][] = $question['question_description'];
             }
         @endphp
         @foreach($questions as $question_name=>$question_descriptions)
             <h5>{{ $question_name }}</h5>
             @foreach($question_descriptions as $question_description)
                 <p class="ms-3">{{ $question_description }}</p>
             @endforeach
         @endforeach
     </div>
 @endforeach

我还没有尝试过,但我认为它会起作用。 我将问题和描述存储在一个数组中,其中键不是索引而是名称。

您或许可以在发送以查看之前按问题名称将问题分组。像这样的东西(例如为了让你开始):

$sections = collect($sections)->map(function($section, $key){
  return [
    "section" => $section,
    "grouped_questions"=> collect($section["question"])->mapToGroups(function($question, $key){
       return [$question['question_name'] => $question];
     })->toArray()
  ];
});

这将为您提供按名称分组的问题。