2012-06-06 26 views
6

tengo algo de XML que estoy utilizando la clase SimpleXML de PHP con y tengo elementos dentro del XML como:Comprobación de si un atributo del objeto es determinado - SimpleXML

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

Sin embargo no son siempre allí, así que necesito para verificar si existen primero.

He tratado ..

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

, así como ..

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

Pero ni trabajo. Solo funcionan si elimino la parte del atributo.

Entonces, ¿cómo puedo verificar si un atributo se establece como parte de un objeto?

Respuesta

12

Lo que estás viendo es el valor del atributo. Usted necesita mirar el atributo (name en este caso) en sí:

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

Buen punto - gracias ! – Brett

6

En realidad, realmente debería usar SimpleXMLElement::attributes(), pero debe comprobar el objeto posteriormente usando isset():

$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 
} 
Cuestiones relacionadas