РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1038 of 1392 menu

Метод shuffle

Метод shuffle применяется к коллекции и возвращает новую коллекцию с элементами, расположенными в случайном порядке. Этот метод не изменяет исходную коллекцию, а создаёт новую с перемешанными элементами. Метод полезен, когда необходимо случайным образом упорядочить данные, например, для отображения случайных записей или организации рандомного порядка в игровых приложениях.

Синтаксис

<?php $collection->shuffle(); ?>

Пример

Давайте создадим коллекцию с числами и перемешаем её:

<?php use Illuminate\Support\Collection; $collection = new Collection([1, 2, 3, 4, 5]); $shuffled = $collection->shuffle(); foreach ($shuffled as $item) { echo $item . " "; } ?>

Результат выполнения кода:

"3 1 5 2 4"

Как видите, элементы изменили своё положение. При каждом вызове метода порядок будет разным.

Пример

Давайте перемешаем коллекцию с ассоциативным массивом:

<?php use Illuminate\Support\Collection; $collection = new Collection([ 'first' => 'a', 'second' => 'b', 'third' => 'c', 'fourth' => 'd', 'fifth' => 'e' ]); $shuffled = $collection->shuffle(); foreach ($shuffled as $key => $value) { echo $key . " => " . $value . "\n"; } ?>

Результат выполнения кода:

"fourth => d first => a third => c fifth => e second => b"

Метод сохраняет связь между ключами и значениями, но меняет их порядок.

Пример

Давайте используем метод shuffle на коллекции из модели в реальном проекте:

<?php use App\Models\Article; use Illuminate\Support\Collection; $articles = Article::all(); $shuffledArticles = $articles->shuffle(); foreach ($shuffledArticles as $article) { echo $article->title . "\n"; } ?>

Результат выполнения кода:

"article 3" "article 1" "article 5" "article 2" "article 4"

Это полезно для вывода случайных записей, например, для блока похожих статей или для случайного показа товаров.

Пример

Давайте используем метод shuffle вместе с методом take для получения случайного подмножества:

<?php use Illuminate\Support\Collection; $collection = new Collection(['a', 'b', 'c', 'd', 'e']); $randomThree = $collection->shuffle()->take(3); foreach ($randomThree as $item) { echo $item . " "; } ?>

Результат выполнения кода:

"b e c"

Такая комбинация позволяет получить несколько случайных элементов из коллекции.

Смотрите также

  • метод random,
    который возвращает один или несколько случайных элементов из коллекции
  • метод take,
    который возвращает указанное количество элементов из начала коллекции
  • метод sort,
    который сортирует коллекцию по значениям
  • метод reverse,
    который переворачивает порядок элементов коллекции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить