vasilek
@vasilek
В постоянном развитии

Сортировка через usort не работает. Почему?

Здрасте всем!
Помогите бездарю разобраться почему не работает сортировка через usort... Собственно вот код:

$mymenu = [
	['title' => "Второй", 'path' => "/route/2/", 'sort' => "2"],
        ['title' => "Первый", 'path' => "/route/1/", 'sort' => "1"],
	['title' => "Третий", 'path' => "/route/3/", 'sort' => "3"],
	['title' => "Четвёртый", 'path' => "/route/4/", 'sort' => "4"],
	['title' => "Пятый", 'path' => "/route/5/", 'sort' => "5"]
];

function printMenu(array $mymenu, $sort) : string
{
    return require($_SERVER['DOCUMENT_ROOT'] . '/mymenu.php');
}

function arraySort(array $mymenu, $key = 'sort', $sort = SORT_ASC)
{
    usort($mymenu, function($a, $b) {
        $a = $a[$key];
        $b = $b[$key];
        $sort = printMenu($sort) == SORT_ASC ? 1 : -1;
        return $sort * ($a <=> $b ? 0 : $a > $b ? 1 : -1);
    });
}


где ошибки и что не так... если можно с разъяснениями т. к я не волшебник а только учусь :).
  • Вопрос задан
  • 600 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
usort($mymenu, function($a, $b) use ($key, $sort) {
    $a = $a[$key];
    $b = $b[$key];
    $sort = printMenu($sort) == SORT_ASC ? 1 : -1;
    return $sort * ($a <=> $b ? 0 : $a > $b ? 1 : -1);
});
Ответ написан
@voredev
В общем ребята спасибо что помогли, вот так я его реализовал с помощью гугления и копипаста. Куратор принял
function arraySort(array $menu, int $sort = SORT_ASC, string $key = 'sort') : array
{
    usort($menu, function($a, $b) use ($sort, $key) {
        return $sort === SORT_DESC ? $b[$key] <=> $a[$key] : $a[$key] <=> $b[$key];});

    return $menu;

}


Вывод
$cssClass= "class='active'";
function showMenu(array $menu, string $cssClass, int $sortType = SORT_ASC){
    $menu = arraySort($menu, $sortType);
    require($_SERVER['DOCUMENT_ROOT'] . '/templates/menu.php');
}


Вывод на самой странице:
showMenu($menu, $cssClass, $sortType=SORT_DESC)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
function arraySort(array &$mymenu, $key = 'sort', $sort = SORT_ASC)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы