Beste,
Het lukt me niet om een recursieve functie om te zetten naar een iteratie.
Dit is nodig, om de prestaties te verbeteren van het php-script om het menu-systeem te genereren
De bedoeling is om een hoop flat arrays te mergen tot 1 alsvolgt:
Ik probeer met een do-while lus, maar ik kom er niet aan uit, hoe moet ik het aanpakken?
** extra info **
De recursieve werkende code is de volgende (als methode van een object)
De functie opoepen:
Het lukt me niet om een recursieve functie om te zetten naar een iteratie.
Dit is nodig, om de prestaties te verbeteren van het php-script om het menu-systeem te genereren
De bedoeling is om een hoop flat arrays te mergen tot 1 alsvolgt:
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
29
30
31
32
33
34
35
36
37
38
39
| <?php array folder0{ 'folder1'=>'string'; 'folder2'=>'string'; } array folder1{ 'folder1a'=>'string'; 'folder1b'=>'string'; } array folder2{ 'folder2a'=>'string'; 'folder2b'=>'string'; } // omzetten naar array folder0{ 'folder1'=> array{ 0 => 'string'; 1 => array{ 'folder1a'=>'string'; 'folder1b'=>'string'; } } 'folder2'=> array{ 0 => 'string'; 1 => array{ 'folder2a'=>'string'; 'folder2b'=>'string'; } } } |
Ik probeer met een do-while lus, maar ik kom er niet aan uit, hoe moet ik het aanpakken?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $folder = 'root'; do{ // initiate $menu = array(); // fill include("/$folder/menu.php"); // parse $menu to $menu[%folder%] = %string%; include("menu_parse.php"); // add to stack $stack[$folder][] = $menu; } while( list($folder,$string) = each($stack)) |
** extra info **
De recursieve werkende code is de volgende (als methode van een object)
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
29
30
31
32
| <?php // initiate $marraytemp $lang = $this->get('lang'); $marray = array(); // search file menu.php $file = "resources/html/$params/menu.php"; if(!is_file($file)){ $file = "resources/htmlloc/$lang/$params/menu.php"; } if(is_file($file)){ // initiate $menu $menu = array(); // read menu-file include($file); // parse $menu foreach($menu as $mkey=>$menu_item){ // initiate $url_html $url_html = null; include('menu_parser.php'); if(!empty($url_html)){ $marray[$mkey][] = $url_html; $marray_temp = $this->load('recursive_marray.php',$mkey); if(!empty($marray_temp)){ $marray[$mkey][] = $marray_temp; } } } } // set return value $params = $marray; |
De functie opoepen:
PHP:
1
2
| // recursive_marray $params = $this->load('recursive_marray.php', 'menu'); |