2014-09-03 149 views
1

我有以下的foreach循環,我得到了很好的結果,但是當它到達elseif語句時,我試圖查看兩個玩家是否在同一個團隊中,如果他們然後將它們列在一起,用&符號分隔。目前我仍然得到以下內容。ElseIf語句與laravel

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 

回答

2

這是棘手的砌起來的$匹配變量:)

@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將超出您的數組範圍,您將得到一個偏移錯誤。 因此再添如果:

@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 
+0

這是一個偉大的建議,但它仍然給我的所有玩家相同的結果是對無論他們是在同一支球隊或沒有。 – user3732216 2014-09-03 23:02:13

+0

如果你可以'print_r'你的'$ match'變量並將其添加到問題中,這將有所幫助。我儘可能從你的問題出發,並可能出錯。 – Nein 2014-09-03 23:06:25

+0

其實我把它放在錯誤的視圖文件中,但它全部顯示爲玩家1和玩家2的所有遊戲列表。 – user3732216 2014-09-03 23:10:26