首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在foreach循环中排除项

问如何在foreach循环中排除项
EN

Stack Overflow用户
提问于 2022-04-13 16:19:20
回答 1查看 231关注 0票数 0

我试图在我的laravel页面上显示一组特定的引用,方法是迭代一个foreach循环,并使用@class循环奇数/循环偶数对奇偶迭代进行不同的样式设置。

但是,当我以@if开头时,只有一些元素进入循环,而有些元素被跳过,这会扰乱我的奇数/偶数(例如#1、#2和#4 ),这意味着我有两个循环偶数的样式。

我如何能跳过那些没有进入循环,以便我可以显示的结果与交替样式?

代码语言:javascript
复制
@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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 16:51:01

正如您所说,并不是每个循环迭代都打印<div>元素,因此在您的情况下,$loop->even和$loop->odd变量对于实现该特定逻辑是无效的。然而,有很多方法可以实现你想要的。第一种进入我脑海的方法是使用一个特定的计数器来实现这一点,即:

代码语言:javascript
复制
@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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71860737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档