0

我从下面介绍的方法中收到以下错误:

注意:未初始化的字符串偏移量:第 30 行 /path/to/file.php 中的 5 致命错误:第 30 行无法访问 path/to/file.php 中的空属性

private function parse($xml, $index = '') {
    echo count($xml->children()); //outputs 6
    $count = 0;
    foreach ($xml->children() as $key => $value) {

        $this->$key[$count] = array();
        $count++;

    }

}

任何想法为什么如果我以这种方式构建多维会导致错误?

如果我将作业更改为:

$this->$key = array($count = > array());

这只是在每个循环中重新分配属性。谢谢丰富

4

2 回答 2

1

您应该在填充之前尝试创建数组。IE$this->key = array();

也就是说,在遍历 XML 元素之前。

于 2012-10-04T15:28:19.040 回答
1

想象一下你有一个字符串:

$string = 'abc`;

进行子字符串访问(看起来像数组)将返回字符:

echo $string[2]; # c

或者,当您超出索引时会出现错误:

echo $string[3]; # null + warning

所以现在动态访问对象的成员$this

$this->$string[2]; # access $this->c

然而,这个几乎没有打破:

$this->$string[3]; # access $this->null (not possible)

这会给你一个空属性的致命错误,一个没有名称的属性。

这解释了你的代码中发生了什么,你还没有告诉你要做什么,所以我希望这些信息能帮助你继续编写你的解析函数。

于 2012-10-04T15:33:31.607 回答