Ich habe ein Array wie dieses:
%Vor%Was ich tun muss, ist eine Brotkrume mit Anchorors zu bauen. Dasjenige, das am Ende der Liste steht, sollte das erste sein. Also als Beispiel:
Sport und Tempo libero & gt; Kategorie & gt; Calcio ...
Ich versuche, das XML mit einer Funktion auf diese Weise ohne Erfolg zu iterieren:
%Vor%Ich habe bei stackoverflow etwas Ähnliches gefunden, aber keine Vorschläge haben mir geholfen, das herauszufinden.
Um eine rekursive Funktion mit einer Ausgabe zu erstellen, benötigen Sie drei Dinge:
$r
in Ihrem Code.
Das hast du richtig verstanden. $bread
zu sein, aber es enthält keinen Wert, da es bei jedem Aufruf von recursive()
leer ist.
Eine einfache Lösung besteht darin, sie in der Funktion als global
zu deklarieren. if
-Anweisung, die die Stoppbedingung überprüft, die Sie nicht haben.
Stattdessen haben Sie eine do-while
-Schleife in Ihrem Code. Sie haben also zwei Fehler. Basierend auf Ihrem Code und ändern Sie es so wenig wie möglich, das ist der richtige Code:
%Vor%Da gehen Sie.
Update: Ich stimme @FlameStorm zu, global
sollte nach Möglichkeit vermieden werden.
Ich habe auch einen Vorschlag erhalten, stattdessen static
zu verwenden, aber es führt zu einem Fehler.
Daher empfehle ich, auch static
zu vermeiden, wenn Sie nicht sicher sind, wie Sie es verwenden sollen.
Dies ist der verbesserte Code:
%Vor% Die Variable $bread
außerhalb der Funktion wird nicht mehr benötigt.
Außerdem wird weder global
noch static
verwendet.
SimpleXMLElement
ist kein Array. Sie könnten es in ein Array konvertieren, aber PHP bietet einen Iterator speziell für diesen Fall, SimpleXMLIterator
.
Da Sie eine rekursive Struktur haben, ist mein Vorschlag, sie mit RecursiveIteratorIterator
zu reduzieren. Unter der Annahme, dass sich Ihre Daten in einer Variablen namens $xml
befinden, sieht Ihre Lösung möglicherweise so aus:
Die Ausgabe im Browser:
Sport und Tempo libero & gt; Kategorie & gt; Calcio & gt; Abbigliamento & gt; Bambine und Ragazze Sport und Tempo libero & gt; Kategorie & gt; Calcio & gt; Abbigliamento & gt; Bambine und Ragazze (die zweite Zeile mit Links)
Der generierte HTML-Code:
%Vor% Eine Antwort oben korrigiert - Sie sollten global
vermeiden, wenn Sie können.
Also, der Code wird
sein %Vor%