2014-12-26 144 views
0

我遇到了此錯誤腳本的問題。未定義的偏移量0

private function setCentroidCluster(){ 
    for ($i=0;$i<count($this->centroidCluster);$i++){ 
     $countObj = 0; 
     $x = array();   
     for ($j=0;$j<count($this->objek);$j++){ 
      if ($this->objek[$j]->getCluster()==$i){ 
       for ($k=0;$k<count($this->objek[$j]->data);$k++){ // Error 
        $x[$k] += $this->objek[$j]->data[$k]; 

錯誤是:

注意:未定義偏移量:0
注意:未定義偏移:1

在線路的錯誤:

$x[$k] += $this->objek[$j]->data[$k]; 
+0

你需要考慮你的數據結構的施工。 –

+1

也許學會使用空格鍵進行縮進/使代碼可讀。 –

回答

1

首先:

$x是一個空數組。你想添加索引$k。這是未定義的。你至少需要定義一些東西。在自動分配數組值和增加現有數組元素之間有一個差異:

for ($k=0;$k<count($this->objek[$j]->data);$k++){ 
     if (!isset($x[$k])) 
      $x[$k] = 0; // depending on the type of data[$k] !!! 
     $x[$k] += $this->objek[$j]->data[$k]; 
} 

應該這樣做。

而作爲一個建議,讓自己熟悉foreach

foreach ($this->objek as $obj => $dat) 
    { 
     if ($obj->getCluster() == $i) 
     { 
      foreach ($dat as $datelem) 
       ....