2014-12-26 55 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) 
       ....