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

Метод sortBy

Метод sortBy применяется к коллекции и возвращает новую коллекцию, отсортированную в порядке возрастания по указанному ключу. Первым параметром передаётся ключ или callback-функция, второй параметр определяет порядок сортировки (по умолчанию SORT_REGULAR).

Синтаксис

<?php $collection->sortBy($key, $options = SORT_REGULAR); ?>

Пример

Давайте отсортируем коллекцию чисел по возрастанию:

<?php use Illuminate\Support\Collection; $collection = collect([5, 1, 4, 2, 3]); $res = $collection->sortBy(function ($value) { return $value; })->values()->all(); print_r($res); ?>

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

[1, 2, 3, 4, 5]

Пример

Отсортируем коллекцию ассоциативных массивов по полю 'age':

<?php use Illuminate\Support\Collection; $users = collect([ ['name' => 'Alice', 'age' => 30], ['name' => 'Bob', 'age' => 25], ['name' => 'Charlie', 'age' => 35], ]); $res = $users->sortBy('age')->values()->all(); print_r($res); ?>

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

[ ["name" => "Bob", "age" => 25], ["name" => "Alice", "age" => 30], ["name" => "Charlie", "age" => 35] ]

Пример

Используем callback-функцию для сортировки по длине строки:

<?php use Illuminate\Support\Collection; $words = collect(['banana', 'apple', 'cherry', 'date']); $res = $words->sortBy(function ($value) { return strlen($value); })->values()->all(); print_r($res); ?>

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

["date", "apple", "banana", "cherry"]

Пример

Сортируем коллекцию объектов по свойству 'created_at':

<?php use Illuminate\Support\Collection; use App\Models\User; $users = User::all(); $res = $users->sortBy('created_at')->values()->all(); foreach ($res as $user) { echo $user->name . " - " . $user->created_at . "\n"; } ?>

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

"John - 2023-01-15 10:00:00" "Jane - 2023-02-20 14:30:00" "Bob - 2023-03-10 09:15:00"

Пример

Сортировка с использованием вложенных ключей через точку:

<?php use Illuminate\Support\Collection; $users = collect([ ['name' => 'Alice', 'profile' => ['rating' => 4.5]], ['name' => 'Bob', 'profile' => ['rating' => 4.8]], ['name' => 'Charlie', 'profile' => ['rating' => 4.2]], ]); $res = $users->sortBy('profile.rating')->values()->all(); print_r($res); ?>

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

[ ["name" => "Charlie", "profile" => ["rating" => 4.2]], ["name" => "Alice", "profile" => ["rating" => 4.5]], ["name" => "Bob", "profile" => ["rating" => 4.8]] ]

Пример

Сортировка коллекции с сохранением ключей (без вызова values):

<?php use Illuminate\Support\Collection; $collection = collect([ 'first' => 10, 'second' => 5, 'third' => 8, 'fourth' => 3, ]); $res = $collection->sortBy(function ($value) { return $value; })->all(); print_r($res); ?>

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

[ "fourth" => 3, "second" => 5, "third" => 8, "first" => 10 ]

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

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