2014-12-26 2 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
Примечание: Undefined смещение: 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) 
       .... 

т.д.

Смежные вопросы