Ik heb de volgende array en functie
De output van hiervan is:
maar ik verwacht
Ik heb gecontroleerd of regel 18 (return nav_indent($nodes, $nid);) toch echt wordt aangeroepen. Dat gebeurt twee keer. Toch wordt de $nodes array van boven naar onderen doorlopen. Regel 18 veranderen in $output[] = nav_indent($nodes, $nid) of $output[] = array_merge(nav_indent($nodes, $nid)) helpt niet. Wat doe ik verkeerd?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| $nodes[1] = array('pid'=>0, 'title'=>'Home' , 'level' => 0); $nodes[2] = array('pid'=>1, 'title'=>'Groenten', 'level' => 1); $nodes[3] = array('pid'=>1, 'title'=>'Fruit' , 'level' => 1); $nodes[5] = array('pid'=>3, 'title'=>'Zomer' , 'level' => 2); $nodes[6] = array('pid'=>3, 'title'=>'Winter' , 'level' => 2); $nodes[7] = array('pid'=>5, 'title'=>'Rood' , 'level' => 3); $nodes[8] = array('pid'=>5, 'title'=>'Geel' , 'level' => 3); $nodes[10] = array('pid'=>7, 'title'=>'Kers' , 'level' => 4); $nodes[11] = array('pid'=>7, 'title'=>'Aardbei' , 'level' => 4); $nodes[13] = array('pid'=>1, 'title'=>'Drinken' , 'level' => 1); function nav_indent($nodes, $current_node) { foreach ($nodes as $nid => $node) { if ($node['pid'] == $current_node) { return nav_indent($nodes, $nid); } else { $output[] = str_repeat('-', $node['level']).$node['title']; } } return $output; } print_r(nav_indent($nodes, 0)); |
De output van hiervan is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Array ( [0] => Home [1] => -Groenten [2] => -Fruit [3] => --Zomer [4] => --Winter [5] => ---Rood [6] => ---Geel [7] => ----Kers [8] => ----Aardbei [9] => -Drinken ) |
maar ik verwacht
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Array ( [0] => Home [1] => -Groenten [2] => -Fruit [3] => --Zomer [4] => ---Rood [5] => ----Kers [6] => ----Aardbei [7] => ---Geel [8] => --Winter [9] => -Drinken ) |
Ik heb gecontroleerd of regel 18 (return nav_indent($nodes, $nid);) toch echt wordt aangeroepen. Dat gebeurt twee keer. Toch wordt de $nodes array van boven naar onderen doorlopen. Regel 18 veranderen in $output[] = nav_indent($nodes, $nid) of $output[] = array_merge(nav_indent($nodes, $nid)) helpt niet. Wat doe ik verkeerd?
"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."