michi: Funktion dich sich immer wieder selbstaufruft, bis nichts mehr v

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.  
			}  
		}  
	}  

  1. Stichwort: Rekursive Funktionen

    1. 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

      1. 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

        1. 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