2017-08-22 80 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

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