2min Devops

How to: Recursive functions

Recursiviteit

PHP Code
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
//de functie
<?PHP
function array2list($array)
{
    echo '<ul>';
    foreach($array as $key => $item)
    {
        echo '<li>';
        if(is_array($item))
        {
            echo $key;
            print_array($item);
        }else
        {
            echo $item;
        }
        echo '</li>';
    }
    echo '</ul>';
}
 
//de array
$menu = array(
	'Home',
	'Images' => array(
		'Smileys',
		'Foto's',
		'Vakantie',
		'Casemod'
	),
	'Tools' => array(
		'Rekenmachine',
		'Nieuws',
		'TV gids' => array(
			'Nederland 1',
			'Nederland 2',
			'Nederland 3'
		),
		'Nieuwsripper',
	),
	'Tutorials'
);
 
//Oproepen van de functie
array2list($menu);
?>


Een hele lap code in één keer, nu nog een keer de belangrijkste – de functie – met uitleg erbij.
PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?PHP
function array2list($array) //1. Begin de functie
{
    echo '<ul>'; //2. begin van een menu/submenu
    foreach($array as $key => $item) //3. array doorlopen
    {
        echo '<li>'; //4. begin van een menuitem
        if(is_array($item)) //5. als het menuitem een array is
        {
			echo $key; //6. word de naam van de array weergeven
            array2list($item); //6. en de functie opnieuw gestart waardoor je dus een boomstructuur krijgt!
        }else //7. anders
        {
            echo $item; //8. word het menuitem geëcho'd
        }
        echo '</li>'; //9. einde van een menuitem
    }
    echo '</ul>'; //10. einde van het menu/submenu
}
?>

Zoals je ziet is het vooral belangrijk dat er in het geval van een array (5.) de functie opnieuw word gestart om zo een submenu te genereren.

Als je dit script een beetje logisch bekijkt zul je zien hoe het werkt.

Table of contents