returnen in recursieve functie?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

29/04/2011 19:50:30
Quote Anchor link
Ik 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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)
  }
}

?>


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

PHP hulp

24/01/2025 22:41:28
 
Bert Beentjes

Bert Beentjes

29/04/2011 20:02:24
Quote Anchor link
Het eerste deel van je functie is goed, het gaat fout bij het recursief aanroepen zoekeendirectory.

De code moet zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 '';
}

?>


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.
 
Ozzie PHP

Ozzie PHP

29/04/2011 20:11:32
Quote Anchor link
ah geweldig... dat was inderdaad de oplossing :-)))))
thanks!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.