2012-06-06 19 views
6

मैं कुछ एक्सएमएल मैं के साथ PHP के SimpleXML वर्ग का उपयोग कर रहा है और मैं इस तरह के रूप 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 
} 
संबंधित मुद्दे