Checking if an object attribute is set - SimpleXML

Brett picture Brett · Jun 6, 2012 · Viewed 17.6k times · Source

I have some XML I am using PHP's SimpleXML class with and I have elements within the XML such as:

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

However they are not always there, so I need to check if they exist first.

I have tried..

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

as well as..

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

But neither work. They only work if I remove the attribute part.

So how can I check to see if an attribute is set as part of an object?

Answer

sesser picture sesser · Jun 6, 2012

What you're looking at is the attribute value. You need to look at the attribute (name in this case) itself:

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