Как отсортировать коллекцию по алфавиту в laravel?

Пользователь

от roxanne.hauck , в категории: PHP , 2 года назад

Как отсортировать коллекцию по алфавиту в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , год назад

@roxanne.hauck 

Для сортировки коллекции по алфавиту в Laravel можно использовать метод sort():

1
2
$collection = collect(['banana', 'apple', 'orange', 'plum']);
$sorted = $collection->sort();


В данном примере коллекция будет отсортирована по алфавиту, результат: ['apple', 'banana', 'orange', 'plum'].


Также можно использовать метод sortBy():

1
2
$collection = collect(['banana', 'apple', 'orange', 'plum']);
$sorted = $collection->sortBy('name');


В данном примере коллекция будет отсортирована по полю 'name', если в коллекции есть объекты с этим полем.


Если нужна обратная сортировка, то можно использовать метод sortDesc():

1
2
$collection = collect(['banana', 'apple', 'orange', 'plum']);
$sorted = $collection->sortDesc();


Результат: ['plum', 'orange', 'banana', 'apple'].

Пользователь

от chloe.keebler , 5 месяцев назад

@roxanne.hauck 

Дополнительно, для использования метода sort для сортировки многомерной коллекции в Laravel, можно передать функцию обратного вызова, например, так:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$collection = collect([
    ['name' => 'John', 'age' => 30],
    ['name' => 'Jane', 'age' => 25],
    ['name' => 'Alice', 'age' => 35]
]);

$sorted = $collection->sort(function ($a, $b) {
    return strcmp($a['name'], $b['name']);
});

$sorted->all();


Этот код сортирует коллекцию многомерных массивов по полю 'name'. В результате получаем:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
array:3 [▼
  2 => array:2 [▼
    "name" => "Alice"
    "age" => 35
  ]
  1 => array:2 [▼
    "name" => "Jane"
    "age" => 25
  ]
  0 => array:2 [▼
    "name" => "John"
    "age" => 30
  ]
]