检查如果一个对象的属性被设置 - 的SimpleXML(Checking if an object

2019-09-17 18:59发布

我有我使用PHP的SimpleXML类的一些XML和我有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';
}

但无论是工作。 他们只当我删除属性部分的工作。

我怎么能检查是否一个属性被设置为对象的一部分?

Answer 1:

您要查找的是属性值。 你需要看看(属性name在这种情况下)本身:

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


Answer 2:

其实,你应该使用的SimpleXMLElement ::属性() ,但你应该使用事后检查对象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
}


Answer 3:

您可以使用的SimpleXMLElement ::属性()

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

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


文章来源: Checking if an object attribute is set - SimpleXML