Проверка атрибута объекта – SimpleXML

У меня есть XML, я использую класс SimpleXML PHP, и у меня есть элементы в XML, такие как:

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

Однако они не всегда существуют, поэтому мне нужно проверить, существуют ли они в первую очередь.

Я пытался..

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

так же как..

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

Но никто не работает. Они работают, только если я удалю часть атрибута.

Итак, как я могу проверить, установлен ли атрибут как часть объекта?

То, что вы ищете, – это значение атрибута. Вам нужно посмотреть на атрибут ( name в этом случае):

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

Фактически, вы действительно должны использовать SimpleXMLElement :: attributes () , но после этого вы должны проверить объект, используя 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 } 

Вы можете использовать SimpleXMLElement :: attributes ()

 $attr = $bookInfo->page->offers->condition->attributes(); if ($attr['name'] == 'Used') { // ...