试图在构造函数中初始化php变量,得到错误

时间:2012-05-26 09:44:35

标签: php class constructor

我正在尝试在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();

 ?>

5 个答案:

答案 0 :(得分:2)

访问对象字段的语法是$obj->field,而不是$obj->$field(除非您要访问存储在$field中的字段名称)。

答案 1 :(得分:1)

$ -

中删除_board
$this->_board = array();

答案 2 :(得分: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

答案 3 :(得分:0)

应该是

$this->board

您不需要第二个$符号。

此外,在构造函数中,在内部循环中,您将在每次迭代中将$row重新初始化为数组。那是为了吗?

答案 4 :(得分:0)

您必须将变量定义为成员变量 吮吸为

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

当您想要使用它时,您必须使用以下语法

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

我希望这有助于你