我对此错误脚本有疑问。
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)
首先:
$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 )
....
等