![](/img/trans.png)
[英]Why does the order of an if/elseif statement matter in laravel?
[英]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
會超出數組,並且會出現偏移錯誤。 因此,在以下情況下添加另一個:
@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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.