diff --git a/php/menu.php b/php/menu.php new file mode 100644 index 0000000..a7ef524 --- /dev/null +++ b/php/menu.php @@ -0,0 +1,67 @@ + 'Home', + 'title' => 'Homepage', + // ...something else... + 'sub' => [ + [ + 'name' => 'sub11', + 'title' => null, + // ...something else... + 'sub' => [ + [ + 'name' => 'sub111', + 'title' => 'This is the Sub 111', + ], + ], + ], + [ + 'name' => '', + 'title' => 'This is the Sub 12', + 'sub' => [ + [ + 'name' => null, + 'title' => 'This is the Sub 121', + ], + ], + ], + ], + ], + [ + 'name' => 'sub2', + 'title' => 'This is the Sub 2', + 'sub' => [ + [ + 'name' => 'sub21', + 'title' => 'This is the Sub 21', + ], + ], + ], +]; + +function has_submenu($menu): bool +{ + return is_array($menu) + && isset($menu['sub']) + && !empty($menu['sub']) + && is_array($menu['sub']); +} +function print_menu(array $menu, int $level = 0) +{ + $ident = ''; + foreach ($menu as $element) { + $ident = str_pad($ident, $level); + echo $ident.'Name: '.($element['name'] ?? '(empty)').PHP_EOL; + echo $ident.'Title: '.($element['title'] ?? '(empty)').PHP_EOL; + echo $ident.'Url: '.($element['url'] ?? '(empty)').PHP_EOL; + echo $ident.'Submenu:'.(has_submenu($element) ? '' : ' (empty)' ).PHP_EOL; + if (has_submenu($element)) { + print_menu($element['sub'], $level += 4); + } + $level -= 4; + } +} +print_menu($nav);