构建数组时未初始化的字符串偏移量

时间:2012-10-04 15:23:44

标签: php multidimensional-array foreach

我从以下方法中收到以下错误:

注意:未初始化的字符串偏移量:第30行/ path/to/file.php中的5个致命错误:无法访问第30行路径/中的/ 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());

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)

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

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