裏有的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