【问题标题】:How to get the value of mixed of array and objects如何获取数组和对象混合的值
【发布时间】:2015-08-25 12:54:18
【问题描述】:

如何获取Bar Foo的值

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

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

【问题讨论】:

  • "它给出了结果,但有通知" ...什么通知?
  • 应该像$sxml[0]['channel']
  • @Khalid 注意:试图获取非对象的属性

标签: php arrays object xml-parsing


【解决方案1】:

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

$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']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多