如何排除foreach循环中的项目
How to exclude items in foreach loop
我试图在我的 laravel 页面上显示一组特定的引用,方法是遍历 foreach 循环并使用 @class 循环奇数/循环偶数来设置奇数和偶数迭代的不同样式。
然而,当我用 @if 开始 foreach 循环时,只有一些进入循环而一些被跳过,这弄乱了我的奇数/偶数(例如 #1、#2 和 #4 进入循环循环,这意味着我有两个元素的样式为循环偶数。
我怎样才能跳过那些没有进入循环的那些,以便我可以使用交替样式显示结果?
@foreach ($references as $reference )
@if(isset($reference['is_startpage'])
&& $reference['is_startpage'] != 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1)
<div @class([
'row py-5' => $loop->odd,
'row flex-row-reverse py-5'=> $loop->even,
])></div>
@endif
@endforeach
正如您所说,并非每个循环迭代都会打印 <div>
元素,因此 $loop->even
和 $loop->odd
变量在您实施该特定逻辑的情况下无效。但是,有很多方法可以实现您想要的。我想到的第一种方法是为此使用特定的计数器,即:
@php $featuredCount = 0; @endphp
@foreach ($references as $reference)
@if(
isset($reference['is_startpage'])
&& $reference['is_startpage'] != 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1
)
@php $featuredCount++; @endphp
<div @class([
'row py-5', // These two are always present, no need to conditionally rewrite them
'flex-row-reverse' => $featuredCount % 2 == 0, // 'Even' check
])></div>
@endif
@endforeach
我试图在我的 laravel 页面上显示一组特定的引用,方法是遍历 foreach 循环并使用 @class 循环奇数/循环偶数来设置奇数和偶数迭代的不同样式。
然而,当我用 @if 开始 foreach 循环时,只有一些进入循环而一些被跳过,这弄乱了我的奇数/偶数(例如 #1、#2 和 #4 进入循环循环,这意味着我有两个元素的样式为循环偶数。
我怎样才能跳过那些没有进入循环的那些,以便我可以使用交替样式显示结果?
@foreach ($references as $reference )
@if(isset($reference['is_startpage'])
&& $reference['is_startpage'] != 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1)
<div @class([
'row py-5' => $loop->odd,
'row flex-row-reverse py-5'=> $loop->even,
])></div>
@endif
@endforeach
正如您所说,并非每个循环迭代都会打印 <div>
元素,因此 $loop->even
和 $loop->odd
变量在您实施该特定逻辑的情况下无效。但是,有很多方法可以实现您想要的。我想到的第一种方法是为此使用特定的计数器,即:
@php $featuredCount = 0; @endphp
@foreach ($references as $reference)
@if(
isset($reference['is_startpage'])
&& $reference['is_startpage'] != 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1
)
@php $featuredCount++; @endphp
<div @class([
'row py-5', // These two are always present, no need to conditionally rewrite them
'flex-row-reverse' => $featuredCount % 2 == 0, // 'Even' check
])></div>
@endif
@endforeach