Funktion dich sich immer wieder selbstaufruft, bis nichts mehr v
michi
- php
ich beschäftige mich schon seit Tagen mit einer Menüstruktur.
Jetzt bin ich fast am Ziel.
Doch nun schaffe ich es nicht meinen CODE in eine funktion zu packen die sich selbt immer wieder aufruft. bzw. wenn kein Treffer mehr vorhandne ist abbricht:
Inhalt des Array:
ID NAME ZUORDNUNG
1 Main1 0
2 Submenu 1
3 Submenu 2
4 Main2 0
Das Array wird aus der Datenbank geladen
while($row = mysql_fetch_assoc( $resource ))
{
$mein_array[$row['id']] = $row;
}
und so lese ich es aus, was aber mehr als unübersichtlich wird mit der Grösse:
foreach($mein_array as $key=>$value)
{
if ($value['id']==$ort_id)
{
echo $value['name'].'<br>';
$neu=$value['zuordnung'];
foreach($mein_array as $key=>$value)
{
if ($value['id']==$neu)
{
echo $value['name'].'<br>';
$neu=$value['zuordnung'];
foreach($mein_array as $key=>$value)
{
if ($value['id']==$neu)
{
echo $value['name'].'<br>';
}
}
}
}
}
}
Das Ziel wäre aber etwas wo, wobei man noch den Startpunkt irgendwie setzen müsste
function VaterSohn($mein_array,$zuordnung=0)
{
foreach($mein_array as $key=>$value)
{
if ($value['id']==$ort_id)
{
echo $value['name'].'<br>';
$neu=$value['zuordnung'];
---> HIER denke ich müsste die Funktion sind wieder selber aufrufen.
}
}
}
Stichwort: Rekursive Funktionen
Stichwort: Rekursive Funktionen
So müsste es funktionieren, aber besteht nicht die Gefahr, wenn die Zuordnung in der Datenbank nicht stimmt das es eine Endlosschaleife wird. Wenn ja, wie kann dem entgegnen.
function VaterSohn($mein_array,$zahl,$zuordnung=0)
{
foreach($mein_array as $key=>$value)
{
if ($value['id']==$zahl)
{
echo $value['name'].'<br>';
VaterSohn($mein_array,$value['zuordnung']);
}
}
}
VaterSohn($mein_array,3);
Ergebnis:
Submenu
Submenu
Main1
Michi
function VaterSohn($mein_array,$zahl,$zuordnung=0)
{
foreach($mein_array as $key=>$value)
{
if ($value['id']==$zahl)
{
echo $value['name'].'<br>';
VaterSohn($mein_array,$value['zuordnung']);
}
}}
was steht denn in der Variable $zahl drin?
ich hätte es jetzt so aufgebaut:
~~~php
function VaterSohn($mein_array,$zuordnung=0){
foreach($mein_array as $key=>$value){
if ($value['zuordnung']==$zuordnung){
echo $value['name'].'<br>';
VaterSohn($mein_array,$key);
}
}
}
Gruß Tim
was steht denn in der Variable $zahl drin?
Die ID, von der aus er starten soll,
wie soll er denn bei deinem Aufbau die Start ID haben, finden?
Michi