heinetz: Verständisfrage Rekursion

Beitrag lesen

Hi,

ich habe versucht, den Code für das Beispiel hier auf das Wesentliche zu reduzieren, damit er für sich spricht und damit ohne Kommentare auskommt. Da ich möglicherweise nicht weiss, was das Wesentliche ist, ist es mir möglicherweise nicht ganz gelungen. Ich hoffe, es ist trotzdem klar geworden, was ich mit dem Code bezwecken will. Dass ich damit nicht zufrieden bin, hatte ich als allererstes geschrieben. Wenn ich in der Lage gewesen wäre, das zu meiner eigenen Zufriedenheit zu lösen, hätte ich das getan.

Ich versuche es anders herum:

Wie lässt sich die Aufgabe besser lösen?

Es gibt ein multidimensionales Array, dass eine Baumstruktur abbildet und dessen Tiefe variabel ist und ich benötige ein eindimesionales Array, das eine Information enthält, die irgendwie den, ich nenne es mal 'Pfad' abbildet. In dem folgenden Beispiel wird nicht der Pfad, sondern nur die "Tiefe" eines Elements, die es in dem Ausgangsarray hatte, abgebildet.

vorher:
-------

Array  
(  
    [1] => Array  
        (  
            [children] => Array  
                (  
                    [137] => Array  
                        (  
                            [children] => Array  
                                (  
                                    [149] => Array  
                                        (  
                                            [site_id] => 149  
                                            [parent_id] => 137  
                                            [link_title] => Newsletter  
                                            [site_type] => 1  
                                        )  
  
                            [site_id] => 137  
                            [parent_id] => 1  
                            [link_title] => freie Seiten  
                            [site_type] => 1  
                        )  
                    [2503] => Array  
                        (  
                            [children] => Array  
                                (  
                                    [138] => Array  
                                        (  
                                            [site_id] => 138  
                                            [parent_id] => 2503  
                                            [link_title] => Impressum  
                                            [site_type] => 1  
                                        )  
  
                                    [139] => Array  
                                        (  
                                            [site_id] => 139  
                                            [parent_id] => 2503  
                                            [link_title] => Datenschutz  
                                            [site_type] => 1  
                                        )  
  
                                )  
  
                            [site_id] => 2503  
                            [parent_id] => 1  
                            [link_title] => Footer  
                            [site_type] => 2  
                        )  
            [site_id] => 1  
            [parent_id] => 0  
            [link_title] => Home  
            [site_type] => 5  
        )  
    [2700] => Array  
        (  
            [site_id] => 2700  
            [parent_id] => 0  
            [link_title] => Aufgaben  
            [site_type] => 7  
        )  
  
)

nachher:
--------

Array  
(  
    [1] => Array  
        (  
            [value] => 1  
            [text] => Home  
            [site_type] => 5  
        )  
  
    [137] => Array  
        (  
            [value] => 137  
            [text] =>    freie Seiten  
            [site_type] => 1  
        )  
  
    [149] => Array  
        (  
            [value] => 149  
            [text] =>       Newsletter  
            [site_type] => 1  
        )  
  
    [2503] => Array  
        (  
            [value] => 2503  
            [text] =>    Footer  
            [site_type] => 2  
        )  
  
    [138] => Array  
        (  
            [value] => 138  
            [text] =>       Impressum  
            [site_type] => 1  
        )  
  
    [139] => Array  
        (  
            [value] => 139  
            [text] =>       Datenschutz  
            [site_type] => 1  
        )  
  
    [2700] => Array  
        (  
            [value] => 2700  
            [text] => Aufgaben  
            [site_type] => 7  
        )  
  
)  

Wie löst man das optimalerweise. Im, in meinen Augen besten Fall sogar ohne des rekursiven Aufruf einer Funktion? Das ganze ist prozedural programmiert.

danke für Tipps und

beste gruesse,
heinetz