2017-08-22 58 views
1

我的代码:如何在数组中声明一个静态数组?

class User 
    { 
     protected static $config = array(
      'expiration' => 0,  
     ); 

     protected static $Db; 

     protected static $user = array(); 
        static::$user['data'] = array(); 
        static::$user['meta'] = array(); 
        static::$user['controls'] = array(); 

在这里,我会得到这个错误:

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting variable (T_VARIABLE) 

抱怨这一点:

`static::$user['data'] = array()` 

我如何声明静态:: $用户[ '数据' ] 这里?

+4

你不能声明数组内的静态变量。初始数组将是静态的,因此您无需将其关键值静态化。 –

+2

在类方法中的某处:'self :: $ user ['key'] = array()' –

回答

1

一个静态数组变量不需要明确地使它的key => value也是static,因为它会被自动处理。

你需要做的是这样的: -

self::$user['data'] = array(); 
self::$user['meta'] = array(); 
self::$user['controls'] = array(); 
1

您已经将$user定义为静态,因此您不需要再次将其元素声明为static。如果你想初始化它。你可以通过如下方法实现它:

class User 
    { 
     protected static $config = array(
      'expiration' => 0,  
     ); 

     protected static $Db; 

     protected static $user = array();   
     public static function get_user() 
     { 
      self::$user['data'] = array(); 
      self::$user['meta'] = array(); 
      self::$user['controls'] = array(); 
      return self::$user; 
     } 

} 
$user = User::get_user(); 
var_dump($user); 
+0

有点令人困惑,因为每次get_user时,都会破坏User :: $ user。 – Progrock

+0

只是一个例子。初始化也可以在其他函数中完成。 –