2011-01-05 5 views
1

В настоящее время я переписываю класс, который обрабатывает файлы xml. В зависимости от xml-файла и его структуры мне иногда нужно объединять объекты.Как объединить объекты в php?

Допустим, когда у меня есть это:

<page name="a title"/> 

И еще раз, когда я это:

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

Раньше мне нужно было только атрибуты элемента "страницы". Вот почему многие из моего кода ожидают объект, содержащий только атрибуты ($ loadedXml-> 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

один из возможных способов

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

Чтобы переместить @attribute в собственность

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

Спасибо :) это было именно то, что мне было нужно! :) – tftd

Смежные вопросы