-4

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

2 に答える 2

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;

利用できません。

それがより明確になることを願っています。

于 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 に答える