未定义的偏移量0

时间:2014-12-26 06:42:06

标签: php undefined

我对此错误脚本有疑问。

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];

1 个答案:

答案 0 :(得分: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 )
              ....