1

PHP新手在这里。我编写了一个脚本来解析从 API 获取的 XML 报告。在某些报告中,某些节点不存在,因此当我尝试从节点获取值时,我收到错误“注意:尝试获取非对象的属性”。我不确定如何处理这个问题,因为我有数百行如下所示,它们将节点值分配给关联数组。

$reportItems['propertyBaths'] = $report187->PropertyProfile->PropertyCharacteristics->Baths[0];
$reportItems['propertyRooms'] = $report187->PropertyProfile->PropertyCharacteristics->TotalRooms[0];
$reportItems['propertyYear'] = $report187->PropertyProfile->PropertyCharacteristics->YearBuilt[0];

如果节点不存在,我想分配一个空字符串。我想知道是否有一种简单的方法可以做到这一点,而不会彻底改变我已经写过的内容,例如:

$reportItems['propertyBaths'] = $report187->PropertyProfile->PropertyCharacteristics->Baths[0] || ""

如果我已经预料到这个问题,我会将每个分配都包装在一个带有错误处理的函数中,但我想知道是否有一个更简单的方法,因为我已经拥有了。

4

2 回答 2

0

你可以做类似的事情

$reportItems['propertyBaths'] = ''.$report187->PropertyProfile->PropertyCharacteristics->Baths[0];

它将自动将 xml 子项的结果转换为字符串,如果它不存在则返回空字符串。正是您想要的,无需测试

于 2013-09-24T19:44:47.547 回答
0

我会isset()用来确保节点存在:

if(isset($node->SomeValue)) {
    $arr['item'] = $node->SomeValue;
} else {
    $arr['item'] = ''
}

此外,正如 Dave 在下面的评论中指出的那样,您还可以使用property_exists()

if (property_exists($node, 'someValue')) {
    $arr['item'] = $node->SomeValue;
} else {
    $arr['item'] = '';
}
于 2013-09-19T20:51:11.610 回答