returnen in recursieve functie?
Ozzie PHP
29/04/2011 19:50:30Ik wil iets returnen in een recursieve functie. Ik laat de functie telkens zichzelf aanroepen middels een foreach loop. Hij returnt nu echter het resultaat aan zichzelf in plaats van aan de variabele waarmee ik de functie aanroep. Iemand een idee hoe ik dit oplos?
In de variabele $pad moet het pad waar de directory 'mijnproject' zich bevindt worden geset.
Als ie nu in de foreach loop komt en hij vindt de directory, dan returnt ie deze aan zijn eigen functie in plaats van aan de variabele $pad. Iemand een idee hoe ik dat oplos?
In de variabele $pad moet het pad waar de directory 'mijnproject' zich bevindt worden geset.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$pad = zoekeendirectory('mijnproject', '/home/www/public_html/');
funtion zoekeendirectory($zoek_deze_directory, $root_directory) {
// kijk of de gezochte directory in de root directory bestaat, zo ja return het pad
if (is_dir($root_directory.$zoek_deze_directory)) {
return $root_directory.$zoek_deze_directory;
}
// Helaas niks gevonden, subdirectories doorzoeken
$sub_directories = glob($root_directory . '*/', GLOB_ONLYDIR);
foreach ($sub_directories as $directory) {
zoekeendirectory($zoek_deze_directory, $directory)
}
}
?>
$pad = zoekeendirectory('mijnproject', '/home/www/public_html/');
funtion zoekeendirectory($zoek_deze_directory, $root_directory) {
// kijk of de gezochte directory in de root directory bestaat, zo ja return het pad
if (is_dir($root_directory.$zoek_deze_directory)) {
return $root_directory.$zoek_deze_directory;
}
// Helaas niks gevonden, subdirectories doorzoeken
$sub_directories = glob($root_directory . '*/', GLOB_ONLYDIR);
foreach ($sub_directories as $directory) {
zoekeendirectory($zoek_deze_directory, $directory)
}
}
?>
Als ie nu in de foreach loop komt en hij vindt de directory, dan returnt ie deze aan zijn eigen functie in plaats van aan de variabele $pad. Iemand een idee hoe ik dat oplos?
Gewijzigd op 29/04/2011 19:51:36 door Ozzie PHP
PHP hulp
24/01/2025 22:41:28Bert Beentjes
29/04/2011 20:02:24Het eerste deel van je functie is goed, het gaat fout bij het recursief aanroepen zoekeendirectory.
De code moet zijn:
Ofwel: als je iets gevonden hebt, geef dan terug wat je gevonden hebt. Anders
doorgaan met de loop.
Als de loop eindigt zonder dat je iets gevonden hebt, geef dan niets terug.
De code moet zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$pad = zoekeendirectory('mijnproject', '/home/www/public_html/');
funtion zoekeendirectory($zoek_deze_directory, $root_directory) {
// kijk of de gezochte directory in de root directory bestaat, zo ja return het pad
if (is_dir($root_directory.$zoek_deze_directory)) {
return $root_directory.$zoek_deze_directory;
}
// Helaas niks gevonden, subdirectories doorzoeken
$sub_directories = glob($root_directory . '*/', GLOB_ONLYDIR);
foreach ($sub_directories as $directory) {
$result = zoekeendirectory($zoek_deze_directory, $directory);
if ($result!='') {return $result;}
}
return '';
}
?>
$pad = zoekeendirectory('mijnproject', '/home/www/public_html/');
funtion zoekeendirectory($zoek_deze_directory, $root_directory) {
// kijk of de gezochte directory in de root directory bestaat, zo ja return het pad
if (is_dir($root_directory.$zoek_deze_directory)) {
return $root_directory.$zoek_deze_directory;
}
// Helaas niks gevonden, subdirectories doorzoeken
$sub_directories = glob($root_directory . '*/', GLOB_ONLYDIR);
foreach ($sub_directories as $directory) {
$result = zoekeendirectory($zoek_deze_directory, $directory);
if ($result!='') {return $result;}
}
return '';
}
?>
Ofwel: als je iets gevonden hebt, geef dan terug wat je gevonden hebt. Anders
doorgaan met de loop.
Als de loop eindigt zonder dat je iets gevonden hebt, geef dan niets terug.