我有一些XML我正在使用PHP的SimpleXML类,我在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';
}
但是都不行。它们仅在我删除属性部分时才起作用。
那么如何检查属性是否设置为对象的一部分?
答案 0 :(得分:13)
您正在查看的是属性值。您需要查看属性(在本例中为name
)本身:
if (isset($bookInfo->page->offers->condition['name']) && $bookInfo->page->offers->condition['name'] == 'Used')
//-- the rest is up to you
答案 1 :(得分:7)
实际上,您应该使用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
}
答案 2 :(得分:1)
您可以使用SimpleXMLElement::attributes()
$attr = $bookInfo->page->offers->condition->attributes();
if ($attr['name'] == 'Used') {
// ...