PHP SimpleXML является одновременно объектом и массивом? Немыслимо! - PullRequest
0 голосов
/ 18 сентября 2009

Хорошо, зацени это вуду:

Этот код:

$xml = new SimpleXMLElement($xml);
 $var = $xml->QBXMLMsgsRs->ClassQueryRs;
 $vars = print_r($var,true);

Возвращает:

    SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [requestID] => Q2xhc3NRdWVyeXw1
            [statusCode] => 0
            [statusSeverity] => Info
            [statusMessage] => Status OK
        )

    [ClassRet] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [ListID] => 80000002-1241128424
                    [TimeCreated] => 2009-04-30T17:53:44-05:00
                    [TimeModified] => 2009-04-30T17:53:44-05:00
                    [EditSequence] => 1241128424
                    [Name] => D1
                    [FullName] => D1
                    [IsActive] => true
                    [Sublevel] => 0
                )

            [1] => SimpleXMLElement Object
                (
                    [ListID] => 80000001-1241128320
                    [TimeCreated] => 2009-04-30T17:52:00-05:00
                    [TimeModified] => 2009-04-30T17:52:00-05:00
                    [EditSequence] => 1241128320
                    [Name] => K1
                    [FullName] => K1
                    [IsActive] => true
                    [Sublevel] => 0
                )

            [2] => SimpleXMLElement Object
                (
                    [ListID] => 80000003-1241128452
                    [TimeCreated] => 2009-04-30T17:54:12-05:00
                    [TimeModified] => 2009-04-30T17:54:12-05:00
                    [EditSequence] => 1241128452
                    [Name] => S1
                    [FullName] => S1
                    [IsActive] => true
                    [Sublevel] => 0
                )
        )

)

Однако этот код:

$xml = new SimpleXMLElement($xml);
 $var = $xml->QBXMLMsgsRs->ClassQueryRs->ClassRet;
 $vars = print_r($var,true);

Возвращает:

SimpleXMLElement Object
(
    [ListID] => 80000002-1241128424
    [TimeCreated] => 2009-04-30T17:53:44-05:00
    [TimeModified] => 2009-04-30T17:53:44-05:00
    [EditSequence] => 1241128424
    [Name] => D1
    [FullName] => D1
    [IsActive] => true
    [Sublevel] => 0
)

В жизни я не могу получить доступ к остальной части этого объекта! Эхо, print_r .... если я пытаюсь получить доступ к определенной переменной, она исчезает!

1 Ответ

3 голосов
/ 18 сентября 2009

PHP SimpleXml - это объект, который реализует интерфейс ArrayAccess , что означает, что вы можете ссылаться на элементы с синтаксисом стиля массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...