未定义的变量问题

时间:2012-09-01 12:41:05

标签: php variables

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;
  }

2 个答案:

答案 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