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;
}
答案 0 :(得分:1)
它是一个范围问题:变量不会在文件上共享,除非你将它们设为全局变量!
(糟糕的解释)变量,如
inc.php
$a=1;
main.php
include "inc.php";
print $a
会起作用
然而
inc.php
function func()
{
$a=1;
}
main.php
include "inc.php";
func();
print $a;
a不可用。
希望更清楚。
答案 1 :(得分:0)
功能范围内的全局变量需要在使用前明确声明全局:
<?php
function foo()
{
global $global_variable_from_outside_function_scope;
$global_variable_from_outside_function_scope += 1;
}
对于$ind
,那里没有这样的变量。你想要更类似于$pop_ptr -> ind
的东西。在类,范围等上再次阅读PHP docs。