Last active 1740030189

php

anthony's Avatar anthony revised this gist 1740030188. 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