ZodiacXP
Erfahrenes Mitglied
PHP:function categories ($categories_id, $string) { $abfrage = mysql_query("SELECT * FROM `categories` WHERE `categories_id` = '$categories_id' LIMIT 1"); if(!@mysql_num_rows($abfrage)) { return "nichts gefunden"; } $row = mysql_fetch_array($abfrage); if($row['parent_id'] == 0) { return $string.$row['categories_id']; } else { $string .= $row['categories_id']; categories($row['parent_id'], $string); } }
Je tiefer ihr geht umso mehr Schachteln sind um die Funktion herum. Der String wird immer Erweitert, dass stimmt. Aber wenn ihr euer Geschenk (der String) in knapp 5 Boxen eingepackt habt und kein Fenster (return) in den Paketen ist, wie wollt ihr dann wissen was drin steckt?
Beachtet doch nur mal den vorletzten Aufruf:
- categories(25, "1022");
- Parent ist 0, also return 102225;
Wohin geht das return? An die nächst höhere Schachtel.
Was macht die? Nichts! Sie leitet es nicht weiter an alle höheren Schachteln.
Warum? Weil dort vorher nur steht: categories($row['parent_id'], $string);
Kein return, kein echo, garnichts.
PS: Ja es geht auch ohne einen zusätzlichen Parameter. Beispiel:
PHP:
// eine Art Countdown, dürfte das ergeben
// mit Zusatz
function ZaehleZusatz($zahl, $string)
{
// Abbruchbedingung
if ($zahl < 0) return $string;
// Rekursion
$string = $zahl . $string;
return ZaehleZusatz($zahl - 1, $string);
}
// ohne
function Zaehle($zahl)
{
// Abbruchbedingung
if ($zahl < 0) return "";
// Rekursion
return $zahl . Zaehle($zahl - 1);
}
Zuletzt bearbeitet: