检查是否在使用Laravel的PHP for循环中设置了值

时间:2017-07-21 15:36:31

标签: php laravel-5

使用Laravel,我想循环遍历一系列成绩(从'0'到'12'),如果在我的中间/数据透视表中找到成绩,我希望附加该特定匹配项的类'主动'。

(例如,在我的中间表中,我将其设置为有两个活跃的 grade_id s:6和7。)

我尝试了for循环:

@for ($x=0; $x<=12; $x++)
    @if ($x === 0)
        <button class="circular small ui icon button">K</button>
    @else
        <button class="circular small ui icon button">{{ $x }}</button>
    @endif
@endfor

这很好地循环从0(K)到12的成绩就好了。但是,如何让激活在数据库中匹配的项目?我需要以某种方式添加foreach输出$ grade作为$ grade(或类似)并检查$ x = $ grade。

但如果我尝试这样的想法:

@for ($x=0; $x<=12; $x++)
    @if ($x === 0)
        <button class="circular small ui icon button">K</button>
    @else
        @foreach ($grades as $key=>$value)
            <button class="circular small ui icon button">{{ $value }}</button>
        @endforeach
    @endif
@endfor

逻辑通过输出K,6,7来解决问题,其中6,7重复12次。是的,这就是我有效告诉它的事情。

这样做显然不起作用,因为我只得到一个等于我的数据库中匹配的行数的结果:

<?php $x = 0; ?>
@foreach ($grades as $grade)
    @if ($x === 0)
        <button class="circular small ui icon button">K</button>
    @else
        <button class="circular small ui icon button">{{ $x }}</button>
    @endif
    <?php $x++; ?>
@endforeach

那么,在检查每个等级是否与中间数据库中设置的值(grade_id)匹配时,如何输出每个/所有等级(从0到12)?我猜这是一个非常简单的任务,但我想不出可以调用控制结构,我可以谷歌或搜索SO ...

[请注意,我没有包含表格结构,因为我认为这与问题无关。]

2 个答案:

答案 0 :(得分:1)

试试这个:

@for ($x=0; $x<=12; $x++)
@if ($x === 0)
    <button class="circular small ui icon button">K</button>
@else
    <button class="circular small ui icon button {{ in_array($x, $grades)?' selected' : ''}}">{{ $x }}</button>
@endif
@endfor

针对刀片表示法进行了修改

答案 1 :(得分:0)

将成绩放在一个单独的数组中,并使用php in_array检查此成绩是否需要active,例如:

@for ($x=0; $x<=12; $x++)
@if ($x === 0)
    <button class="circular small ui icon button">K</button>
@else
    @if in_array($x, $grades)   
        <button class="circular small ui icon button active">{{ $value }}</button>
    @else
    @endif
@endif

@endfor