2012-06-06 5 views
6

Ich habe einige XML ich mit PHP SimpleXML Klasse verwenden, und ich habe Elemente innerhalb der XML wie:zu überprüfen, ob ein Objekt-Attribut gesetzt - SimpleXML

<condition id="1" name="New"></condition> 
<condition id="2" name="Used"></condition> 

aber sie nicht immer da sind, so brauche ich um zu prüfen, ob sie zuerst existieren.

ich versucht habe ..

if (is_object($bookInfo->page->offers->condition['used'])) { 
    echo 'yes'; 
} 

sowie ..

if (isset($bookInfo->page->offers->condition['used'])) { 
    echo 'yes'; 
} 

Aber weder Arbeit. Sie funktionieren nur, wenn ich den Attributteil entferne.

Wie kann ich überprüfen, ob ein Attribut als Teil eines Objekts festgelegt ist?

Antwort

12

bei Was Sie suchen verwenden die Attributwert ist. Sie müssen sich auf das Attribut (name in diesem Fall) sehen selbst:

if (isset($bookInfo->page->offers->condition['name']) && $bookInfo->page->offers->condition['name'] == 'Used') 
    //-- the rest is up to you 
+0

Guter Punkt - danke ! – Brett

6

Eigentlich Sie wirklich SimpleXMLElement::attributes() verwenden sollten, aber Sie sollten das Objekt danach isset() mit überprüfen:

$attr = $bookInfo->page->offers->condition->attributes(); 
if (isset($attr['name'])) { 
    //your attribute is contained, no matter if empty or with a value 
} 
else { 
    //this key does not exist in your attributes list 
} 
Verwandte Themen