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, not $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

你不需要第二个$标志。

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

于 2012-05-26T09:46:37.243 回答
0

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

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

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

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

我希望这可以帮助你

于 2012-05-26T09:49:43.887 回答