PHP加速for循环排名

Ast*_*nox 0 php laravel

我们目前正在开发一个锦标赛平台.该平台确实产生完全动态的排名,因此我们每次都有不同的积分,不同数量的参与者等.

锦标赛可以有多轮.对于每一轮,管理员可以为参与者设置排名.这就是问题所在.我目前的代码:

<select name="round_{{ $i }}_placements[{{ $participant->id }}]" class="form-control scoreboard-placement">
 @for($x=0;$x<$tournament->checkedin()->count()+1;$x++)
  <option value="{{ $x }}" @if($participant->getRanking($i)->ranking_value == $x) selected="selected" @endif>{{ $x }}</option>
 @endfor
</select>
Run Code Online (Sandbox Code Playgroud)

但我现在加载时间确实存在很大问题:

在我的上一个案例中,我有67名参与者.对于他经历的每个参与者,并添加了所有这67个选择选项.但它也检查了67次排名,这显然不会发生.这将我们后端的加载时间增加到将近30秒,这是巨大的.当我删除它们时,它又回到了2.

所以我想要的是:创建所有选项一次并自动更改所选框.你们知道我怎么能做到这一点吗?切换到JS进行更改也没有问题.

Mar*_*ijn 7

你应该$trnmntCheckedinCount = $tournament->checkedin()->count()在循环中使用它.现在每个条目调用一次这些方法(所以67次).我的建议曾经做过一次,这应该是重要的.

您可以检查$x每个选项的人员排名是否为每个用户(因此,有67个参与者的10个选项意味着670个检查).您应该在选项之前检查用户排名for,然后检查所述变量.这应该很重要:)


我的laravel几乎不存在,但是这样的事情:

@php
// Place this out of the loop which loops through your users
$tournementCount = $tournament->checkedin()->count();
@endphp

<select name="round_{{ $i }}_placements[{{ $participant->id }}]" class="form-control scoreboard-placement">
    @php
        $participantRanking = $participant->getRanking($i)->ranking_value;
    @endphp

    @for($x=0; $x<$tournementCount+1; $x++)
        <option value="{{ $x }}" @if( $participantRanking == $x ) selected @endif>{{ $x }}</option>
    @endfor
</select> 
Run Code Online (Sandbox Code Playgroud)