2011-01-05 12 views
1

Ich schreibe gerade eine Klasse neu, die XML-Dateien verarbeitet. Abhängig von der XML-Datei und ihrer Struktur muss ich manchmal Objekte zusammenführen.Wie Objekte in PHP zusammenführen?

Sagen wir einmal habe ich dieses:

<page name="a title"/> 

Und ein anderes Mal habe ich dieses:

<page name="a title"> 
    <permission>administrator</permission> 
</page> 

Bevor ich nur die Attribute aus der "Seite" Element benötigt. Deshalb erwartet ein großer Teil meines Codes ein Objekt, das nur die Attribute ($ loadedXml-> attributes()) enthält.
Nun gibt es XML-Dateien, in denen die

<permission> 

Element benötigt wird.
Ich habe es geschafft, die Objekte zu verschmelzen (obwohl nicht wie ich wollte), aber ich kann nicht auf einen von ihnen zugreifen (wahrscheinlich ist es etwas, das ich vermisse).

Zu meinen Objekten verschmelzen ich diesen Code verwendet:

(object) array_merge(
        (array) $loadedXml->attributes(), 
        (array) $loadedXml->children() 
        ); 


Das ist, was ich von print_r get():

stdClass Object ( 
    [@attributes] => Array ([name] => a title) 
    [permission] => Array ([0] => administrator) 
) 


So, jetzt ist meine Frage, wie die für den Zugriff auf @attributes-Methode und wie man die Arrays von [@attributes] zum Hauptobjekt verschiebt?

Antwort

1

eine der möglichen Wege

$attr = '@attributes'; 
var_dump($obj->$attr); 

Zum @attribute in Immobilien

foreach ($obj->$attr as $key=>$val) 
{ 
    $obj->$key = $val; 
} 
unset($obj->$attr); 
+0

Thanks :) zu bewegen das war genau das, was ich brauchte! :) – tftd

Verwandte Themen