PHP在嵌套对象

时间:2017-02-08 21:34:06

标签: php arrays xml loops object

我在抓取并迭代一些有点埋藏的XML数据时遇到了麻烦。我可以将对象转到print_r但不只是单个属性值。

这是简化的XML。巢是准确的。

SimpleXMLElement Object ( 
    [@attributes] => Array ( 
    [amenity] => Array ( 
        [0] => SimpleXMLElement Object ( 
            [@attributes] => Array ( 
                [distance] => Within Facility 
                [name] => Biking 
            ) 
        ) 
        [1] => SimpleXMLElement Object ( 
            [@attributes] => Array ( 
                [distance] => Within Facility 
                [name] => Bird Watching 
            )
        )
...
)
)
)

我想抓住/回应每个设施的名称。

$amenitiesSet = $xml->amenity;

foreach ($amenitiesSet as $am) {
    print_r($am[0]);    
}

抓住每个物体。每一次深入的尝试都是失败的。我知道这是我想念的简单事。我不确定何时使用[i]['string']->等。我不熟悉使用XML数据集。

$am[0]->name这样的东西?

1 个答案:

答案 0 :(得分:0)

好的,所以我终于想出了一个解决方案。这样做的技巧是循环对象数组中的对象,然后将对象属性更改为字符串。然后我可以建立列表。这是最终的循环代码。

foreach($xml->amenity as $AMN){
            $amNameItem = (string)$AMN['name'];
            $amList .= $amNameItem.', ';
        }

不知道这是否是最佳解决方案,但至少我可以从xml对象数组中的对象数组中获取对象属性列表。