Eredeti
<?php
$nav = [
[
'name' => '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);
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); |