2012-06-06 72 views
6

我有我使用PHP的SimpleXML類的一些XML和我在XML中的元素,如:檢查,如果一個對象的屬性設置 - SimpleXML的

<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'; 
} 

但無論工作。他們只在刪除屬性部分時才起作用。

那麼如何檢查一個屬性是否被設置爲對象的一部分呢?

回答

12

什麼你看是屬性值。你需要看看(在這種情況下name)的屬性本身:

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

好一點 - 感謝! – Brett

6

其實,你真的應該使用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 
} 
相關問題