Warum ändert SimpleXML mein Array zum ersten Element des Arrays, wenn ich es verwende?

8

Hier ist mein Code:

%Vor%

Ausgabe:

%Vor%

Warum gibt es nur die [0] anstelle des gesamten Arrays aus? Ich verstehe es nicht.

    
Qasim 22.07.2011, 22:35
quelle

5 Antworten

5

Es liegt daran, dass du zwei lol Elemente hast. Um auf die Sekunde zuzugreifen, müssen Sie dies tun:

%Vor%

das gibt dir "da"

%Vor%

Gibt dir "Hallo"

Die Methode children () des SimpleXMLEelements gibt Ihnen ein Objekt, das alle untergeordneten Elemente eines Elements enthält, zum Beispiel:

%Vor%

gibt Ihnen ein Objekt, das alle untergeordneten Elemente des "testenden" SimpleXMLEelements enthält.

Wenn Sie iterieren müssen, können Sie den folgenden Code verwenden:

%Vor%

Es gibt weitere Informationen über SimpleXMLElement hier:

Ссылка

    
93196.93 22.07.2011, 23:04
quelle
6

Was @ Yottatron vorgeschlagen hat, ist wahr, aber nicht alle Fälle, wie dieses Beispiel zeigt:

Wenn Ihr XML wie folgt aussehen würde:

%Vor%

Simplexmls Ausgabe wäre:

%Vor%

und schreiben

%Vor%

Sie würden erwarten, dass Ihr Ergebnis

ist %Vor%

aber stattdessen würden Sie bekommen:

%Vor%

und

%Vor%

würdest du bekommen:

%Vor%

Was Sie tun müssen, wenn Sie nur den lolelem wollen:

%Vor%

Das ergibt dieses Ergebnis (nicht wie erwartet, sondern enthält die richtigen Elemente)

%Vor%     
Taha Paksu 24.03.2012 21:39
quelle
1

Was Sie vielleicht tun möchten, ist die Json-Codierung / Decodierung

%Vor%

Mit dem wahren Argument, das Sie aufrufen können, anstatt - & gt; Verwende [Name]

also ein Beispiel wäre:

%Vor%

Wenn Sie mehr als ein Element haben, wird es normalerweise in ein @attributes eingefügt, wenn die Elemente Attribute haben. Dem kann mit $title = $title['@attributes']

entgegengewirkt werden

Ich hoffe, es könnte helfen.

    
Wisienkas 24.09.2013 14:48
quelle
1

Ach ja, ich erinnere mich an einfaches XML, das mir bei diesem Parsing-Array-Problem fast den Kopf zerbrach Probieren Sie den folgenden Code aus. Es wird Ihnen ein Array von LOL-Elementen geben, oder, wenn Sie nur ein einzelnes LOL-Element haben, wird es das auch in einem Array zurückgeben.

Der Hauptvorteil davon ist, dass Sie etwas wie foreach ($ lol als $ element) machen können, und es wird immer noch auf einem einzelnen (oder auf 0) LOL-Element funktionieren.

%Vor%     
Silas Palmer 18.12.2013 07:23
quelle
0

Ran in dieses Problem ...

Xpath kann etwas langsam sein, so dass Sie den gleichen Effekt mit einer einfachen for-Schleife erzielen können.

%Vor%     
Cameron 23.04.2012 04:32
quelle

Tags und Links