【问题标题】:Is static array property not possible in php?php中不可能有静态数组属性吗?
【发布时间】:2012-08-03 12:51:27
【问题描述】:

下面是我在 php 中的代码,我得到了错误:

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

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

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

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

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

【问题讨论】:

  • 您的代码没有将$arrErr 定义为静态成员变量。您应该将其声明为public static $arrErr = array();
  • 没有理由投反对票?我发现这个问题对我有帮助。所以,投票吧。顺便说一句,OP 应该考虑接受答案

标签: php class static


【解决方案1】:

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

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

您可以在 this demo 中看到它的工作原理。

【讨论】:

  • 嘿,谢谢。我错过了 $ 符号。现在它正在工作。 class StaticSettings{ private static $arrErr = array(); function setkey($key,$value){ self::$arrErr[$key] = $value; } } 。这是我的愚蠢错误。
  • 在 php 中不需要定义变量。我们简单地使用它。不用写了,private static $arrErr = array();
  • @user1463076 - 这不是真的。当你省略它时,a fatal error is produced.
【解决方案2】:

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

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

    function setkey($key,$value){
        self::arrErr[$key] = $value;
    }
}
?>

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 2021-07-22
    • 2020-01-02
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2020-03-24
    相关资源
    最近更新 更多