anthony revised this gist . Go to revision
1 file changed, 65 insertions
menu.php(file created)
@@ -0,0 +1,65 @@ | |||
1 | + | <?php | |
2 | + | $nav = [ | |
3 | + | [ | |
4 | + | 'name' => 'Home', | |
5 | + | 'title' => 'Homepage', | |
6 | + | // ...something else... | |
7 | + | 'sub' => [ | |
8 | + | [ | |
9 | + | 'name' => 'sub11', | |
10 | + | 'title' => null, | |
11 | + | // ...something else... | |
12 | + | 'sub' => [ | |
13 | + | [ | |
14 | + | 'name' => 'sub111', | |
15 | + | 'title' => 'This is the Sub 111', | |
16 | + | ], | |
17 | + | ], | |
18 | + | ], | |
19 | + | [ | |
20 | + | 'name' => '', | |
21 | + | 'title' => 'This is the Sub 12', | |
22 | + | 'sub' => [ | |
23 | + | [ | |
24 | + | 'name' => null, | |
25 | + | 'title' => 'This is the Sub 121', | |
26 | + | ], | |
27 | + | ], | |
28 | + | ], | |
29 | + | ], | |
30 | + | ], | |
31 | + | [ | |
32 | + | 'name' => 'sub2', | |
33 | + | 'title' => 'This is the Sub 2', | |
34 | + | 'sub' => [ | |
35 | + | [ | |
36 | + | 'name' => 'sub21', | |
37 | + | 'title' => 'This is the Sub 21', | |
38 | + | ], | |
39 | + | ], | |
40 | + | ], | |
41 | + | ]; | |
42 | + | ||
43 | + | function has_submenu($menu): bool | |
44 | + | { | |
45 | + | return is_array($menu) | |
46 | + | && isset($menu['sub']) | |
47 | + | && !empty($menu['sub']) | |
48 | + | && is_array($menu['sub']); | |
49 | + | } | |
50 | + | function print_menu(array $menu, int $level = 0) | |
51 | + | { | |
52 | + | $ident = ''; | |
53 | + | foreach ($menu as $element) { | |
54 | + | $ident = str_pad($ident, $level); | |
55 | + | echo $ident.'Name: '.($element['name'] ?? '(empty)').PHP_EOL; | |
56 | + | echo $ident.'Title: '.($element['title'] ?? '(empty)').PHP_EOL; | |
57 | + | echo $ident.'Url: '.($element['url'] ?? '(empty)').PHP_EOL; | |
58 | + | echo $ident.'Submenu:'.(has_submenu($element) ? '' : ' (empty)' ).PHP_EOL; | |
59 | + | if (has_submenu($element)) { | |
60 | + | print_menu($element['sub'], $level += 4); | |
61 | + | } | |
62 | + | $level -= 4; | |
63 | + | } | |
64 | + | } | |
65 | + | print_menu($nav); |
Newer
Older