11

以下是我在php中的代码,我收到错误:

解析错误:语法错误,第 4 行 /LR_StaticSettings.php 中的意外“[”

<?php
class StaticSettings{
    function setkey ($key, $value) {
        self::arrErr[$key] = $value; // error in this line
    }
}
?>

我不想静态使用$this->arrErr[$key],这样我就可以在不创建实例/对象的情况下获取和设置静态属性。

为什么会出现这个错误?我们不能创建静态数组吗?

如果有其他方法,请告诉我。谢谢

4

2 回答 2

23

您需要将该变量声明为静态成员变量,并在引用它时在其名称前加上美元符号:

class StaticSettings{
    private static $arrErr = array();
    function setkey($key,$value){
        self::$arrErr[$key] = $value;
    }
}

你会像这样实例化它:

$o = new StaticSettings;
$o->setKey( "foo", "bar");
print_r( StaticSettings::$arrErr); // Changed private to public to get this to work

您可以在此演示中看到它的工作原理。

于 2012-08-03T12:52:54.313 回答
0

您的代码未定义$arrErr为静态成员变量。您应该将其声明为

<?php
class StaticSettings{
    public static $arrErr = array();

    function setkey($key,$value){
        self::arrErr[$key] = $value;
    }
}
?>
于 2012-08-03T12:55:07.513 回答