Dernière activité 1740030189

php
menu.php Brut
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
43function has_submenu($menu): bool
44{
45 return is_array($menu)
46 && isset($menu['sub'])
47 && !empty($menu['sub'])
48 && is_array($menu['sub']);
49}
50function 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}
65print_menu($nav);