-4

init.php代码中有3个编译错误:

未定义的变量 $ind

未定义的变量 $popsize

未定义变量 $chrom

如何以正确的方式解决这个问题?

主文件

include_once 'init.php';

class Individual {
    public $genes = array();
    //...
}

class Population {
    public $ind = array();
    public $ind_ptr;
    public function setIndPtr(Individual $ind) {
        $this->ind_ptr = $ind;
    }   
}

$popsize = 10;
$chrom = 5;
$pop = new Population();
$pop_ptr = new Population();

$pop = init(pop_ptr);

初始化文件

 function init(Population $pop_ptr) {
      $pop_ptr->setIndPtr($ind[0]);  
      for ($i = 0 ; $i < $popsize ; $i++) { 
        for ($j = 0; $j < $chrom; $j++) {
          $d = rand(0,1);
          if($d >= 0.5) {
             $pop_ptr->ind_ptr->genes[$j] = 1;
          }
          else {
             $pop_ptr->ind_ptr->genes[$j] = 0;
          } 
        }
        $pop_ptr->setIndPtr($ind[$i+1]);
      }
      $pop_ptr->setIndPtr($ind[0]);

      return $pop_ptr;
  }
4

2 回答 2

1

这是一个范围问题:变量不会在文件中共享,除非您将它们设为全局!

(不好解释)变量,例如

公司.php

$a=1;

主文件

include "inc.php";
print $a

会工作

然而

公司.php

function func()
{
 $a=1;
}

主文件

include "inc.php";
func();
print $a;

a 不可用。

希望这能让它更清楚。

于 2012-09-01T12:42:59.370 回答
0

函数范围内的全局变量需要在使用前显式声明为全局变量

<?php
function foo()
    {
    global $global_variable_from_outside_function_scope;
    $global_variable_from_outside_function_scope += 1;
    }

至于$ind,那里没有这样的变量。你想要更类似于$pop_ptr -> ind. 再次阅读关于类、范围等的PHP 文档。

于 2012-09-01T12:47:22.190 回答