ElseIf语句与laravel

时间:2014-09-03 21:50:29

标签: php laravel blade

我有以下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

1 个答案:

答案 0 :(得分:3)

将$ 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