为什么PHP在将所述数组作为对象属性引用时返回数组的第一个值?

时间:2011-02-28 00:59:39

标签: php xml object

为什么以下代码中的第二个echo行返回( string )'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 :(得分:0)

这不是一般的PHP功能。尝试:

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

SimpleXML的一个功能是访问像这样的属性获取第一个适用的子节点,然后可以将其转换为字符串。

虽然SimpleXML是一个扩展,但你可以使用_get _toString魔术方法在纯PHP中实现类似的东西。