2012-10-04 48 views
0

我正在從方法以下錯誤介紹如下補償:未初始化字符串,同時建立陣列

注意:未初始化字符串偏移量:5線30致命錯誤/path/to/file.php:無法訪問空上線30

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

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

    } 

} 

爲什麼如果我建立這樣,它會導致錯誤的多維任何想法在path屬性/到/ file.php?

如果我的任務更改爲:

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

這只是重新分配屬性中的每個循環。 謝謝 豐富

+0

你可以添加你正在處理的XML,以便我們可以有一個更好的圖片? – Baba

+0

可能的重複:[PHP:什麼原因:「注意:未初始化的字符串偏移量」出現?](http://stackoverflow.com/questions/1263636/php-what-c​​auses-notice-uninitialized-string-offset-to-出現) – hakre

回答

1

試想一下,你有一個字符串:

$string = 'abc`; 

做串訪問(這看起來像數組)將返回字符:

echo $string[2]; # c 

或者當你你得到你的錯誤列的索引:

echo $string[3]; # null + warning 

所以現在訪問你的對象$this DYNAM成員ically:

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

然而,這一個很難打破:

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

此向你的空屬性的致命錯誤,沒有名稱的屬性。

這解釋了你的代碼中發生了什麼,你還沒有告訴你想要做什麼,所以我希望這些信息將幫助你繼續編寫你的解析函數。

+0

我明白了。所以我正在訪問一段字符串,或者試圖重新分配字符串的一部分而不是分配一個新的索引。 –

+0

你實際上首先動態地說出財產的名稱。由於房地產名稱的結果,你會得到致命的錯誤。 – hakre

+0

我想動態地構建一個多維數組。 xml有一些名爲'Class'的節點,我想將它設置爲數組$ this-> class [0],$ this-> class [1] ...,它有子數組。我希望它是動態的,因爲我有一些類似結構的XML文件,我不想知道每個節點的所有名稱。謝謝! –

1

你應該嘗試在填充它之前創建數組。 也就是說$this->key = array();

也就是說,在循環XML元素之前。

+0

這不是一個答案。 – hakre