如何在 foreach blade laravel 访问上一个或下一个数组
How to access prev or next array at foreach blade laravel
我目前正在开发一个 blade 视图,它将从控制器循环一个数组。
我刚刚创建了一个 table,其中包含方面、详细方面、当前状态和评论。所以,我想在我的 blade 视图中循环(使用 foreach),然后在我的数组中会有一个条件,即方面在下一行中具有相同的值。
对于table例如:
Aspects | Detail Aspects | Current Status | Remark
Curriculum | 1 | Good | Good
Curriculum | 2 | Good | Good
Curriculum | 3 | Good | Good
Teaching | 4 | Good | Good
所以对于 table,我想检查 if prev.Aspect == current.Aspect
,所以我不需要再次打印它,或者我可以 rowspan 那。
我已经在我的 foreach 中使用了 $index,但我只能将其打印为数字,无法访问我的 Obj[index]
值。
这是我的 blade 代码:
<table border='1'>
<tr align='center' class='header'><td>Aspects</td><td>Details</td><td>Current Status</td><td>Remark</td></tr>
@foreach($prAspect as $index => $data)
<tr>
<td>{{$data->praDesc}}</td>
<td>{{$data->prsDesc}}</td>
<td>{{$data->currentStatus}}</td>
<td>{{$data->remark}}</td>
</tr>
@endforeach
</table>
您可以使用 for
循环代替:
@for ($i = 0; $i < count($prAspect); $i++)
// use $i as index
// use $prAspect[$i]
@endfor
在获取数据时将 ->toArray()
添加到查询构建器。这将有助于您在这种情况下以数组形式访问项目以便于比较。
<table border='1'>
<tr align='center' class='header'><td>Aspects</td><td>Details</td><td>Current Status</td><td>Remark</td></tr>
@foreach($prAspect as $index => $data)
<tr>
<td>{{$data['praDesc']}}</td>
<td>{{$data['prsDesc']}}</td>
<td>{{$data['currentStatus']}}</td>
<td>{{$data['remark']}}</td>
</tr>
@endforeach
</table>
尝试一下可能会有帮助
@foreach($prAspect as $index => $data)
<tr>
<td>{{!$loop->first ? $prAspect[$index- 1]->praDesc : $data->praDesc}}</td>
<td>{{!$loop->first ? $prAspect[$index - 1]->prsDesc : $data->prsDesc }}</td>
<td>{{!$loop->first ? $prAspect[$index- 1]->currentStatus : $data->currentStatus }}</td>
<td>{{!$loop->first ? $prAspect[$index- 1]->remark : $data->remark }}</td>
</tr>
@endforeach
我目前正在开发一个 blade 视图,它将从控制器循环一个数组。
我刚刚创建了一个 table,其中包含方面、详细方面、当前状态和评论。所以,我想在我的 blade 视图中循环(使用 foreach),然后在我的数组中会有一个条件,即方面在下一行中具有相同的值。
对于table例如:
Aspects | Detail Aspects | Current Status | Remark
Curriculum | 1 | Good | Good
Curriculum | 2 | Good | Good
Curriculum | 3 | Good | Good
Teaching | 4 | Good | Good
所以对于 table,我想检查 if prev.Aspect == current.Aspect
,所以我不需要再次打印它,或者我可以 rowspan 那。
我已经在我的 foreach 中使用了 $index,但我只能将其打印为数字,无法访问我的 Obj[index]
值。
这是我的 blade 代码:
<table border='1'>
<tr align='center' class='header'><td>Aspects</td><td>Details</td><td>Current Status</td><td>Remark</td></tr>
@foreach($prAspect as $index => $data)
<tr>
<td>{{$data->praDesc}}</td>
<td>{{$data->prsDesc}}</td>
<td>{{$data->currentStatus}}</td>
<td>{{$data->remark}}</td>
</tr>
@endforeach
</table>
您可以使用 for
循环代替:
@for ($i = 0; $i < count($prAspect); $i++)
// use $i as index
// use $prAspect[$i]
@endfor
在获取数据时将 ->toArray()
添加到查询构建器。这将有助于您在这种情况下以数组形式访问项目以便于比较。
<table border='1'>
<tr align='center' class='header'><td>Aspects</td><td>Details</td><td>Current Status</td><td>Remark</td></tr>
@foreach($prAspect as $index => $data)
<tr>
<td>{{$data['praDesc']}}</td>
<td>{{$data['prsDesc']}}</td>
<td>{{$data['currentStatus']}}</td>
<td>{{$data['remark']}}</td>
</tr>
@endforeach
</table>
尝试一下可能会有帮助
@foreach($prAspect as $index => $data)
<tr>
<td>{{!$loop->first ? $prAspect[$index- 1]->praDesc : $data->praDesc}}</td>
<td>{{!$loop->first ? $prAspect[$index - 1]->prsDesc : $data->prsDesc }}</td>
<td>{{!$loop->first ? $prAspect[$index- 1]->currentStatus : $data->currentStatus }}</td>
<td>{{!$loop->first ? $prAspect[$index- 1]->remark : $data->remark }}</td>
</tr>
@endforeach