我从以下方法中收到以下错误:
注意:未初始化的字符串偏移量:第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());
这只是为每个循环重新分配属性。 谢谢 富
答案 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)
这会给你一个空属性的致命错误,一个没有名字的属性。
这解释了代码中发生了什么,你没有告诉你要做什么,所以我希望这些信息可以帮助你继续编写你的解析函数。