Php 在Laravel中格式化视图中的JSON数据

Php 在Laravel中格式化视图中的JSON数据,php,laravel,view,model,Php,Laravel,View,Model,我试图以这种图解格式在视图中显示我的数据。方括号中的项目是表格的标题 [Lecture] ECE 201 Section 1 .. .. ECE 201 Section 2 .. .. ECE 201 Section 3 .. .. [Lab] ECE 201 Section 10 .. .. ECE 201 Section 11 .. .. ECE 201 Section 12 .. .. [Recitation] ECE 20

我试图以这种图解格式在视图中显示我的数据。方括号中的项目是表格的标题

[Lecture]

ECE 201 Section 1   ..   ..

ECE 201 Section 2   ..   ..

ECE 201 Section 3   ..   ..

[Lab]

ECE 201 Section 10   ..   ..

ECE 201 Section 11   ..   ..

ECE 201 Section 12   ..   ..

[Recitation]

ECE 201 Section 20   ..   ..

ECE 201 Section 21   ..   ..

ECE 201 Section 22   ..   ..
对于一个类,我的JSON如下所示

   {
       year: "2015",
       term: "Summer",
       subject_code: "ECE",
       course_no: "201",
       instr_type: "Lecture",
       instr_method: "Face To Face",
       section: "003",
       crn: "42953",
       course_title: "Digital Logic",
       credits: "3.0",
       day: "R",
       time: "06:30 pm - 09:20 pm",
       instructor: "Teacher Name",
       campus: "University Building",
       max_enroll: "18",
       enroll: "18",
       building: "PLACE",
       room: null,
       description: "Introduction to logic for computing",
       pre_reqs: "",
       co_reqs: ""
   }
基本上,我想将
instr_type
作为表格的标题显示一次,并在表格中显示相应的数据。您可以假设数据返回是按
instr\u type
排序的,因此如果您有多个实验室和讲座,它将像这样返回-实验室、实验室、实验室、讲座、讲座等

我觉得如果我的数据采用以下格式,我想做的事情将更容易实现:

   {
       year: "2015",
       term: "Summer",
       subject_code: "ECE",
       course_no: "201",
       instr_type: "Lecture",
       info: [
       { 
         instr_method: "Face To Face",
         section: "003",
         crn: "42953",
         course_title: "Digital Logic",
         credits: "3.0",
         day: "R",
         time: "06:30 pm - 09:20 pm",
         instructor: "Teacher Name",
         campus: "University Building",
         max_enroll: "18",
         enroll: "18",
         building: "PLACE",
         room: null,
         description: "Introduction to logic for computing",
         pre_reqs: "",
         co_reqs: ""
       }, {
         instr_method: "Face To Face",
         section: "004",
         crn: "42954",
         ..
       }
       ]
   }

我的问题是,如何在控制器或视图中格式化数据,以便实现这种效果?为这个愚蠢的问题道歉;我觉得这个问题的答案很简单,我想得太多了。

我发现使用两个循环最适合这种情况

// in your Controller
$classesByType = [];
foreach ($classes => $class) {
    $classesByType[$class['instr_type']][] = $class;
}
return view('my-view', ['classesByType' => $classesByType]);

// In your Blade template
@foreach ($classesByType as $type => $classes)
    <h1>{{ $type }}</h1>
    @foreach ($classes as $class)
        <p>{{ $class['subject_code'] }} {{ $class['course_code'] }} ...</p>
    @endforeach
@endforeach
//在控制器中
$classesByType=[];
foreach($classes=>$classes){
$classesByType[$class['instr_type']][]=$class;
}
返回视图('my-view',['classesByType'=>$classesByType]);
//在刀片模板中
@foreach($classesByType作为$type=>$classes)
{{$type}
@foreach($classes作为$class)
{{$class['subject_code']}{{$class['course_code']}}

@endforeach @endforeach
如果要按其他元素进行分类,只需添加另一个循环/数组级别:

// in your Controller
$classesByLabelAndType = [];
foreach ($classes => $class) {
    $label = $class['subject_code'] . " " . $class['course_no'];
    $classesByLabelAndType[$label][$class['instr_type']][] = $class;
}
return view('my-view', ['classesByLabelAndType' => $classesByLabelAndType]);

// In your Blade template
@foreach ($classesByLabelAndType as $label => $classesByType)
    <h1>{{ $label }}</h1>
    @foreach ($classesByType as $type => $classes)
        <h2>{{ $type }}</h2>
        @foreach ($classes as $class)
            <p>{{ $class['course_code'] }} ...</p>
        @endforeach
    @endforeach
@endforeach
//在控制器中
$classesByLabelAndType=[];
foreach($classes=>$classes){
$label=$class['subject\u code']。“.$class['course\u no'];
$classesByLabelAndType[$label][$class['instr_type']][]=$class;
}
返回视图('my-view',['classesByLabelAndType'=>$classesByLabelAndType]);
//在刀片模板中
@foreach($classesByLabelAndType as$label=>$classesByType)
{{$label}}
@foreach($classesByType作为$type=>$classes)
{{$type}
@foreach($classes作为$class)
{{$class['course_code']}}

@endforeach @endforeach @endforeach
正是我想要的。谢谢你,很高兴能帮忙!并不是所有人都有超过一千的声誉,所以如果有绿色的复选标记,我们将不胜感激!:)我会在两分钟内接受!StackOverflow Limitions=)啊,我没有意识到——我对这方面还不熟悉。谢谢嘿,本。如何计算
$classesByType
数组中的类总数?我尝试了
count($classesByType)
,但很明显,这只返回
instr\u type的数量