2012-06-06 36 views
6

Tôi có một số XML Tôi đang sử dụng lớp SimpleXML PHP với và tôi có những yếu tố trong XML như:kiểm tra nếu một thuộc tính đối tượng được thiết lập - SimpleXML

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

Tuy nhiên họ không phải là luôn luôn ở đó, vì vậy tôi cần để kiểm tra xem chúng có tồn tại trước không.

Tôi đã cố gắng ..

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

cũng như ..

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

Nhưng không phải làm việc. Chúng chỉ hoạt động nếu tôi xóa phần thuộc tính.

Vậy làm cách nào để kiểm tra xem thuộc tính có được đặt làm một phần của đối tượng không?

Trả lời

12

gì bạn đang tìm kiếm là giá trị thuộc tính. Bạn cần phải nhìn vào các thuộc tính (name trong trường hợp này) chính nó:

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

Tốt điểm - nhờ ! – Brett

1

Bạn có thể sử dụng SimpleXMLElement::attributes()

$attr = $bookInfo->page->offers->condition->attributes(); 

if ($attr['name'] == 'Used') { 
    // ... 
6

Trên thực tế, bạn thực sự nên sử dụng SimpleXMLElement::attributes(), nhưng bạn nên kiểm tra các đối tượng sau đó sử dụng 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 
} 
Các vấn đề liên quan