Ik heb een array als hieronder en wil een functie maken die een navigatie menuutje terug geeft.
De functie moet drie mogelijke outputs geven:
Wie kan mij op weg helpen?
PHP:
1
2
3
4
5
6
7
8
| $navitems[1] = Array('parent'=> 0, 'title'=>'Home', 'alias'=>'/'); $navitems[4] = Array('parent'=> 0, 'title'=>'Contact', 'alias'=>'contact/'); $navitems[11] = Array('parent'=> 0, 'title'=>'Over', 'alias'=>'over/'); $navitems[16] = Array('parent'=> 4, 'title'=>'Aanmelden', 'alias'=>'contact/aanmelden'); $navitems[18] = Array('parent'=> 4, 'title'=>'Vragen', 'alias'=>'contact/vragen'); $navitems[19] = Array('parent'=>11, 'title'=>'Route', 'alias'=>'over/route'); $navitems[20] = Array('parent'=>11, 'title'=>'Producten', 'alias'=>'over/producten'); $navitems[21] = Array('parent'=>19, 'title'=>'Auto', 'alias'=>'over/route/auto'); |
De functie moet drie mogelijke outputs geven:
- als $activeItem kinderen heeft, kinderen laten zien. Bijvoorbeeld als iemand op "Contact" klikt, moet de functie "Aanmelden" en "Vragen" teruggeven;
- als $activeItem geen kinderen heeft, maar wel broertjes (=nodes met zelfde parent), dan deze laten zien (inclusief hemzelf). Bijvoorbeeld: klik op "Aanmelden" retourneert "Aanmelden" en "Vragen"
- als $activeItem geen kinderen en broertjes heeft, niets laten zien. Bijvoorbeeld klikken op "Auto" retourneert niks
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| function buildSub($menuItems, $activeItem) { static $output; foreach ($menuItems as $itemKey=>$item) { if ($item['pid'] == $activeItem) { if ($activeItem == $itemKey) $output.= '<li class="on"><a href="'.$item['alias'].'">'.$item['title'].'</a>'; else $output.= '<li class="off"><a href="'.$item['alias'].'">'.$item['title'].'</a>'; } } return '<div id="subnav"><ul>'.$output.'</ul></div>'; } |
Wie kan mij op weg helpen?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."