如何在PHP中合并对象?

时间:2011-01-05 02:49:11

标签: php xml

我目前正在重写一个处理xml文件的类。 根据xml文件及其结构,我有时需要合并对象。

让我说一旦有了这个:

<page name="a title"/>

另一次我有这个:

<page name="a title">
  <permission>administrator</permission>
</page>

之前,我只需要“page”元素中的属性。这就是为什么我的很多代码都希望一个对象只包含属性($ loadedXml-&gt; attributes())。
现在有xml文件在其中

<permission> 

元素是必需的。
我确实设法合并了对象(虽然不是我想要的)但我无法访问其中一个(很可能是我缺少的东西)。

为了合并我的对象,我使用了这段代码:

(object) array_merge(
                     (array) $loadedXml->attributes(), 
                     (array) $loadedXml->children()
                    );


这是我从print_r()得到的:

stdClass Object ( 
    [@attributes] => Array ( [name] => a title ) 
    [permission]  => Array ( [0] => administrator ) 
) 


所以现在我的问题是如何访问@attributes方法以及如何将数组从[@attributes]移动到主对象?

1 个答案:

答案 0 :(得分:1)

可能的方式之一

$attr = '@attributes';
var_dump($obj->$attr);

@attribute移至属性

foreach ($obj->$attr as $key=>$val)
{
  $obj->$key = $val;
}
unset($obj->$attr);