Фабула
Есть массив:
$users = [
['name' => 'Alice', 'age' => 30, 'score' => 85],
['name' => 'Bob', 'age' => 25, 'score' => 95],
['name' => 'Charlie', 'age' => 35, 'score' => 70],
['name' => 'David', 'age' => 28, 'score' => 90],
];
Твоя задача:
- Отсортировать массив по полю
ageпо возрастанию. - Отсортировать массив по полю
scoreпо убыванию. - Сделать это через отдельные функции, наприм
Решение
<?php
$users = [
['name' => 'Alice', 'age' => 30, 'score' => 85],
['name' => 'Bob', 'age' => 25, 'score' => 95],
['name' => 'Charlie', 'age' => 35, 'score' => 70],
['name' => 'David', 'age' => 28, 'score' => 90],
];
function sortByAgeAsc(array $users) {
usort($users, function($a, $b) {
return $a['age'] <=> $b['age']; // по возрастанию
});
return $users;
}
print_r(sortByAgeAsc($users));
// Вывод
Array
(
[0] => Array
(
[name] => Bob
[age] => 25
[score] => 95
)
[1] => Array
(
[name] => David
[age] => 28
[score] => 90
)
[2] => Array
(
[name] => Alice
[age] => 30
[score] => 85
)
[3] => Array
(
[name] => Charlie
[age] => 35
[score] => 70
)
)
По убыванию (просто поменяли a и b местами – return $b[‘score’] <=> $a[‘score’]):
function sortByScoreDesc(array $users) {
usort($users, function($a, $b) {
return $b['score'] <=> $a['score']; // по убыванию
});
return $users;
}
print_r(sortByScoreDesc($users));
// Вывод
Array
(
[0] => Array
(
[name] => Bob
[age] => 25
[score] => 95
)
[1] => Array
(
[name] => David
[age] => 28
[score] => 90
)
[2] => Array
(
[name] => Alice
[age] => 30
[score] => 85
)
[3] => Array
(
[name] => Charlie
[age] => 35
[score] => 70
)
)