У меня есть 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') { // ...