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

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 に答える