2 Stimmen

Zusammenfassen des PHP-Arrays in einem Treeview

Array
(
    [00000000017] => Array
        (
            [00000000018] => Array
                (
                    [00000000035] => I-0SAYHADW4JJA
                    [00000000038] => I-RF10EHE25KY0
                    [00000000039] => I-8MG3B1GT406F
                )

            [00000000019] => I-7GM4G5N3SDJL
        )

    [00000000025] => Array
        (
            [00000000011] => I-HT34P06WNMGJ
            [00000000029] => I-U5KKT1H8J39W
        )

    [00000000040] => I-GX43V2WP9KPD
    [00000000048] => I-XM526USFJAH9
    [00000000052] => I-M414RK3H987U
    [00000000055] => I-GABD4G13WHX7
)

Ich habe das obige Array und möchte eine Baumansicht erstellen.. Irgendwelche Empfehlungen?

Ich denke, ich muss meine Frage weiter ausführen..

Ich möchte diese Arrays entsprechend der Ebenen des Arrays speichern..

Beispiel, ich möchte etwas in dieser Art haben:

[Ebene_1]=> 00000000017,00000000025,00000000040, 00000000048, 00000000052
[Ebene_2]=> 00000000018,00000000019, 00000000011, 00000000029
[Ebene_3]=> 00000000035, 00000000038, 00000000039

0voto

jasonbar Punkte 12905

Sie möchten eine modifizierte Breitensuche. Diese liefert die richtigen Ergebnisse für Ihre Beispiestruktur:

 array
        (
            '00000000018' => array
                (
                    '00000000035' => 'I-0SAYHADW4JJA',
                    '00000000038' => 'I-RF10EHE25KY0',
                    '00000000039' => 'I-8MG3B1GT406F'
                ),

            '00000000019' => 'I-7GM4G5N3SDJL'
        ),

    '00000000025' => array
        (
            '00000000011' => 'I-HT34P06WNMGJ',
            '00000000029' => 'I-U5KKT1H8J39W'
        ),

    '00000000040' => 'I-GX43V2WP9KPD',
    '00000000048' => 'I-XM526USFJAH9',
    '00000000052' => 'I-M414RK3H987U',
    '00000000055' => 'I-GABD4G13WHX7'
 );

$var = BFTraverse($data);
$i = 0;

foreach ($var as $level)
    echo "Level " . ++$i . ': ' . implode(', ', $level) . "\n";
?>

Die Ausgabe lautet:

Level 1: 00000000017, 00000000025, 00000000040, 00000000048, 00000000052, 00000000055
Level 2: 00000000018, 00000000019, 00000000011, 00000000029
Level 3: 00000000035, 00000000038, 00000000039

Bearbeitet: Geändert im Sinne von Schlüssel und nicht den Knotenwerten.

0voto

Alex Weber Punkte 2146

Ich bin kürzlich auf das gleiche Problem gestoßen und dieser Artikel von Kevin van Zonneveld hat mir geholfen.

Grundsätzlich musst du eine rekursive Funktion verwenden. Schau dir den Artikel an, das ist was du brauchst!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X