【问题标题】:PHP associative array with static vars keys or values ERRORPHP关联数组与静态变量键或值错误
【发布时间】:2015-03-10 19:41:43
【问题描述】:

我有一个类,其中包含一些包含数值的静态公共变量和一个将数值与字符串匹配的关联静态数组。

但是,php 不允许我这样做,它说: 解析错误:语法错误,意外的“$TYPE_DATE”(T_VARIABLE),需要标识符(T_STRING)

这是简化的代码:

class myclass
{
    public static $TYPE_DATE = 0b00010010;
    public static $TYPE_INT = 0b01010001;
    private static $types = array( "DATE"=>myclass::$TYPE_DATE, "INTEGER"=>myclass::$TYPE_INT);
}

提前致谢

【问题讨论】:

  • 在类的前两行末尾不应该有分号吗?
  • 是的,我只是忘了把它放在这段代码中

标签: php arrays


【解决方案1】:

我认为您不能使用静态变量作为其他静态变量的参考。 你可以用 const 来做到这一点。

class myclass
{
    const TYPE_DATE = 0b00010010;
    const TYPE_INT = 0b01010001;
    private static $types = array( "DATE"=>self::TYPE_DATE, "INTEGER"=>self::TYPE_INT);

    public function __construct() {

        print_r(self::$types);
    }
}

$class= new myclass();

输出为:数组([DATE] => 18 [INTEGER] => 81)

另一种方法是通过调用初始化函数来设置$types

class myclass
{
    private static $TYPE_DATE = 0b00010010;
    private static $TYPE_INT = 0b01010001;
    public static $types;

    public static function init() {
        self::$types = array( "DATE"=>self::$TYPE_DATE, "INTEGER"=>self::$TYPE_INT);
    }
}
myclass::init();
print_r(myclass::$types);

【讨论】:

  • 我不知道为什么会这样,但它有效,谢谢!
猜你喜欢
  • 2013-01-28
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
相关资源
最近更新 更多