里有的init.php码3个编译错误:未定义的变量问题
未定义的变量$ IND
未定义的变量$ popsize
未定义的变量$ CHROM
如何正确解决这个问题?
main.php
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);
的init.php
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;
}
你的错误说的一切 - 没有像“$ ind”这样的数组,$ popsize和$ chrom在另一个范围内定义。你可以让它们成为全局的,但更好的方法是通过参数传递给init函数。 – Cyprian
@Cyprian:好的,init($ pop_ptr,$ popsize,$ chrom)帮助删除了第二和第三个警告消息。但$ ind是在pop_ptr(类Population)中定义的。为什么在init中看不到? – Gusgus
,因为“ind”是pop_ptr的属性。所以如果你想引用这个变量,你可以这样做:$ pop_ptr-> ind [0](不是$ ind [0]) – Cyprian