0

phpコンストラクターメソッド内でクラス属性を初期化しようとしていますが、エラーが発生します:

注意:未定義の変数:9行目のC:\ wamp \ scaleUp \ back\objects.phpの_board

コード:

<?php
class Board {
public function __construct(){
    for ($x = 9; $x >= 0; $x--) {
        for ($y = 0; $y<10; $y++){
            $row = array();
            $row[$y] = $y;
        }
        $this->$_board = array(); 
            $this->$_board[$x] = $row;
    }
    echo "here";
    echo $this->$board[$x];
}       

 }

 $board =  new Board();

 ?>
4

5 に答える 5

2

オブジェクトフィールドにアクセスするための構文は$obj->field、ではありません$obj->$field(に格納されているフィールド名にアクセスする場合を除く$field)。

于 2012-05-26T09:46:24.423 に答える
1

$から削除_board-

$this->_board = array();
于 2012-05-26T09:47:28.500 に答える
1

ここで、コードをデバッグしました。

<?php
class Board {
public $_board;
public function __construct(){
    for ($x = 9; $x >= 0; $x--) {
        for ($y = 0; $y<10; $y++){
            $row = array();
            $row[$y] = $y;
        }
        $this->_board = array(); 
            $this->_board[$x] = $row;
    }
    echo "here";
    echo $this->_board[$x+1];/*OR*/print_r($this->_board[$x+1]);
    //$x had to be incremented here.
}       

 }

 $board =  new Board();

 ?>

他の人が述べたように、次の構文に従う必要があり$obj->propertyます$obj->$property

于 2012-05-26T09:59:13.197 に答える
0

そのはず

$this->board

$2番目の記号は必要ありません。

$rowまた、コンストラクターの内側のループでは、反復ごとに配列として再初期化しています。それは意図されていますか?

于 2012-05-26T09:46:37.243 に答える
0

変数をメンバー変数として定義する必要があります。

class object {
 $_board ;
...
...
...
}

使用する場合は、次の構文を使用する必要があります

$this->_board = .....;

これがお役に立てば幸いです

于 2012-05-26T09:49:43.887 に答える