Прокручивать массив и строить с ним навигационное меню

0

Я пытаюсь создать навигационную систему, где категории и подкатегории хранятся в массиве.

Это массив:

$navigation = array(

'users' =>  array(

    'view'      =>  1,
    'edit'      =>  1,
    'delete'    =>  1,
    'list'      =>  1

),

'profiles'      =>  array(

    'view'      =>  4,
    'edit'      =>  4,

),

'projects'      =>  array(

    'new'       =>  3,
    'edit'      =>  3,
    'delete'    =>  1,
    'list'      =>  2,
    'mylist'    =>  3

)

);

С помощью этого массива я хотел бы пройти через каждый элемент, и если ранг пользователей равен или меньше значений (1, 2, 3), они показывают соответствующие ссылки. Но я не знаю, как начать с этого.

Надеюсь, это достаточно ясно!

  • 0
    if the users' rank is equal or lower than the values (1, 2, 3) то какой рейтинг пользователей равен?
  • 0
    Значение подкатегорий (например, new = 1 или edit = 3 и т. Д.). Рейтинг пользователя соответствует разрешениям, которые он получит.
Теги:
arrays

1 ответ

0
Лучший ответ
foreach ($navigation as $category) {

    // need to track if main categories have been output already
    $category_already_output = false;

    foreach ($category as $subcategory => $permission) {

        if ($current_user_permission_level <= $permission) {

            if ( ! $category_already_output ) {
                // output your html for this main category nav here
                $category_already_output = true;
            }

            // output your html for this subcategory here

        }
    }
}

EDIT: Вышеупомянутое предполагает, что вы не хотите показывать основную категорию, если у пользователя нет разрешений для любой из его подкатегорий. Если вы хотите показывать каждую основную категорию все время, вы можете упростить это:

foreach ($navigation as $category) {

    // output main category html here

    foreach ($category as $subcategory => $permission) {

        if ($current_user_permission_level <= $permission) {

            // output your html for this subcategory here

        }
    }
}
  • 0
    Не могли бы вы дать некоторые объяснения относительно $category_already_output = false и $category_already_output = true ? Спасибо!
  • 0
    Эта техника совершенно необязательна. Вместо этого вы можете вывести основную навигационную категорию непосредственно перед запуском 2-го цикла foreach, если вы всегда хотите показывать каждую категорию в навигации. Преимущество вывода главной навигационной категории во внутреннем foreach состоит в том, что если у пользователя нет ЛЮБОГО допустимого разрешения, скажем, для «профилей», тогда вы вообще не будете показывать им навигационную ссылку на профили.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню