带有laravel的ElseIf语句


ElseIf statement with laravel

我有下面的foreach循环,我得到了很好的结果,但当涉及到elseif语句时,我试图看看两名球员是否在同一支球队,如果他们在一起,然后用&象征目前我仍然得到以下内容。

Player 1 vs. Player 2 vs. Player 3 vs. Player 4

这是可以的,但是球员1和球员2在同一支球队。因此,出于某种原因,他们不在同一支球队。有人看到我的问题是什么吗?

@foreach ($match->players AS $key => $player)
    @foreach ($player->list as $member)
        {{ $member->player_name }}
    @endforeach
    @if($match->players->count() - 1 != $key)
        vs.
    @elseif ($match->players[$key - 1]->team_id == $player->team_id)
        &
    @endif
@endforeach 

编辑:我更改了一些数据,但仍然可以工作。

http://pastebin.com/AdyzemC4

把$match变量拼在一起很难:)

@if($match->players->count() - 1 != $key)

你的$match->players->count()总是等于玩家数量的值(比如'n')。因此,您的'if'只检查'n-1'!=当前密钥($key)。[这是真的,除了最后一个键,所以你得到了所有的"vs"]。

这应该有效:

@foreach ($match->players AS $key => $player)
    @foreach ($player->list as $member)
        {{ $member->player_name }}
    @endforeach
    @if($player->team_id != $match->players[$key + 1]->team_id)
        vs.
    @elseif ($player->team_id == $match->players[$key + 1]->team_id)
        &
    @endif
@endforeach

在这个过程中,我们检查当前玩家的团队是否与下一个玩家的团队[$key+1]相同。

注:你需要为最后一个玩家停止循环,因为$key+1会超出你的数组,你会得到一个偏移错误。因此,添加另一个if:

@foreach ($match->players AS $key => $player)
    @foreach ($player->list as $member)
        {{ $member->player_name }}
    @endforeach
    @if($key + 1 < $match->players->count())
        @if($player->team_id != $match->players[$key + 1]->team_id)
            vs.
        @elseif ($player->team_id == $match->players[$key + 1]->team_id)
            &
        @endif
    @endif
@endforeach