Почему PHP возвращает первое значение массива, когда ссылается на массив как свойство объекта? - PullRequest
1 голос
/ 28 февраля 2011

Почему вторая строка эха в следующем коде возвращает ( строка ) 'first', а не массив?

Код:

<?php

$foo = simplexml_load_string(<<<EOF
<?xml version='1.0'?> 
<document>
    <body>
        <content>first</content>
        <content>second</content>
    </body>
</document>
EOF
);

echo '<pre>$foo entire object:', "\n", print_r($foo, true), "\n";
echo '$foo->body->content: ', "\n", $foo->body->content;

?>

Результат:

$foo entire object:
SimpleXMLElement Object
(
    [body] => SimpleXMLElement Object
        (
            [content] => Array
                (
                    [0] => first
                    [1] => second
                )
        )
)

$foo->body->content: 
first

1 Ответ

0 голосов
/ 28 февраля 2011

Это не общая функция PHP.Попробуйте:

class Foo
{
    public function Foo()
    {
    $this->a = array("foo", "bar");
    }
}
$f = new Foo();
print_r($f->a);

Это особенность SimpleXML, при которой доступ к такому свойству получает первый применимый дочерний элемент, который затем может быть преобразован в строку.

Хотя SimpleXML является расширением, выможет реализовать нечто подобное в чистом PHP, используя магические методы _ get и _toString .

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