如何获取数组和对象混合的值

时间:2015-06-10 10:19:29

标签: php arrays object xml-parsing

如何获取 Bar Foo 的价值?

Array
(
    [channel] => SimpleXMLElement Object
        (
            [item] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [title] => Bar Foo
                        )
                )
        )
)
echo $sxml['channel']->item[$i]->title;

它给出了结果,但是注意:试图获取非对象的属性

1 个答案:

答案 0 :(得分:0)

如果您的对象结构如下:(object> array> object> array),那么您调用索引/键是错误的。请注意以下示例:

$x = new stdClass();
$x->channel = array();
$y = new stdClass();
$y->title = "Bar Foo";
$x->channel[0] = $y;
//echo $x['channel']->item[$i]->title;
//// Fatal error: Cannot use object of type stdClass as array
echo $x->channel[0]->title;
//// Success

但是如果它的结构与你描述的方式一致,那么你的回声线给我正确的输出(见下文),所以你可能在某个地方创建了一个数组或对象,它没有正确地映射到你在伪 - 中描述的内容上面的代码。

$x = array();
$x['channel'] = new stdClass();
$x['channel']->item = array();
$x['channel']->item[0] = new stdClass();
$x['channel']->item[0]->title = "Bar Foo";
echo $x['channel']->item[0]->title;

另外,如果您发现需要“美元符号”复杂结构(如涉及数组索引的动态变量名称),您可以使用这样的大括号:

$x = 2;
$y = array("x"=>$x);
print $($y['x']);