Случайное использование shuffle на лезвии Laravel сделать уникальным - PullRequest
0 голосов
/ 07 сентября 2018

У меня проблема.

У меня есть этот код:

  <?php $q =(count($question->answers)/2) - 1;  ?>
    @php ($q = 3)

    @php ($p = 1)
    @for($i=0; $i <=(count($question->answers)/2) - 1; $i++) 

        <?php 

        $match = $question->answers->where('is_key', 0)->shuffle()->toArray();  

        $match = $match->unique();
        dd($match['text']);

        ?>

        <?php $option = $question->answers->where('order', $i)->where('is_key', 1)->first(); ?>


    <div class="row">
        <div class="column" style="border: 1px solid  #e8e8e8;">
            <b>{{$p}}.</b> {{$match['text']}} 
        </div>

        <div class="column" style="border: 1px solid #e8e8e8;">
            <b> {{$p}}. </b>   {{$option->text}} 
        </div>

    </div>

    @php ($p++)
    @endfor

Итак, у меня есть эти две колонки options и match.

Что мне нужно, так это группа матчей, которую нужно перетасовать.

Я пробовал это до сих пор, но когда он перетасовывает, иногда он повторяет один и тот же текст, а какой-то текст вообще не отображается.

например:.

Когда перетасовывается 1 2 3 4, это выглядит как 1 2 1 4 или 1 2 3 3.

Как сделать цифры уникальными при перетасовке?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Сначала получите все ответы:

$match = $question->answers->where('is_key', 0)->toArray();

Затем перемешайте:

$match = shuffle($match);
0 голосов
/ 07 сентября 2018

Попробуйте использовать inRandomOrder ()

$match = $question->answers->where('is_key', 0)->inRandomOrder()->toArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...