Прохожу обучение дошел до пользовательских функций и тут настиг такой вопрос:
1. сортировка вывода разделов должна быть от меньшего к большему. Все пункты меню должны быть ссылками на разделы со стилем text-decoration:none;
2. в подвале сортировка вывода разделов от большего к меньшему Все пункты меню должны быть ссылками на разделы со стилем text-decoration:none;
Изначально я решил эту проблему вот так
Функция:// Меню по убыванию:
function out_function($a, $b){
return ($a['sort'] < $b['sort']);
}
// Меню по возрастанию:
function in_function($a, $b){
return ($a['sort'] > $b['sort']);
}
Само менюuasort($menu, 'in_function');
foreach ($menu as $value): ?>
<? $class_active = strpos($_SERVER["REQUEST_URI"], $value['path']) !== false ? " class='active'" : '';?>
<a <?= $class_active ?> href='<?= $value['path'] ?>'> <?= $value['title'] ?></a>
<?php endforeach; ?>
Массив $menu$menu = [
['title' => "О нас", 'path' => "/route/about/", 'sort' => 2],
['title' => "Главная", 'path' => "../../index.php", 'sort' => 1],
['title' => "Проекты", 'path' => "/route/project/", 'sort' => 3],
['title' => "Галерея", 'path' => "/route/gallery/", 'sort' => 4],
['title' => "Карта", 'path' => "/route/map/", 'sort' => 5],
['title' => "Контакты", 'path' => "/route/contact/", 'sort' => 6]
];
Код работал но в итоге все равно меня попросили исправить
1) Вместо двух функций меню по убыванию и меню по возрастанию создайте одну и используйте формальный параметр, отвечающий за сортировку
В итоге я сделал так, но сортировка не происходит в чем может быть проблема
function printMenu($menu, $sort)
{
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/main_menu.php'; //подключение массива $menu
};
function array_sort($menu, $key = 'sort', $sort = SORT_ASC)
{
usort( $menu, 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);
});
};
foreach ($menu as $value): ?>
<? $class_active = strpos($_SERVER["REQUEST_URI"], $value['path']) !== false ? " class='active'" : '';?>
<a <?= $class_active ?> href='<?= $value['path'] ?>'> <?= $value['title'] ?></a>
<?php endforeach; ?>