2013-04-30 87 views
0

static $myvar = $my_array[3];

我從來沒有需要使用靜態函數,直到現在。但我需要用它來要麼存儲返回值從functionarray

static $myvar = $my_array[3]; 

static $myvar = my_func(); 

爲什麼我不能這樣使用它?靜態只用於整數?

+1

哪裏有你應該使用'static'的信息? – hek2mgl 2013-04-30 18:19:57

+0

因爲我希望變量在多次調用時存儲相同的值 – Nadine 2013-04-30 18:20:50

+0

靜態變量只能保存靜態類型的值,函數的返回值或其他變量的值不是靜態的。查看我的答案瞭解更多詳情。 – Drahcir 2013-04-30 18:51:47

回答

0

看看PHP Static

靜是OOP

+0

有沒有我可以用於基於功能的PHP的版本? – Nadine 2013-04-30 18:21:25

+0

據我所知不是 – 2013-04-30 18:22:48

0

像你沒有正確使用它看起來。請參閱PHP.net: Static Keyword。你需要在課堂中使用它。而且我不確定是否需要指定publicprivateprotected

2

我不知道,如果你正在尋找這樣的:

function foo() { 
    static $counter; 
    if(!$counter) { 
     $counter = 0; 
    } 

    $counter++; 
    echo $counter; 
} 

注意,在OOP編程使用的旁邊,static關鍵字可以使用在只應初始化函數體申報static variables一旦。

所以調用foo()會給你下面的輸出,爲$counter初始化僅在第一次foo()被稱爲:在Static Variables

foo(); // 1 
foo(); // 2 
0

從頁面:

靜態聲明得到解決在編譯時。

請參閱鏈接頁面上的示例7。

這就是爲什麼你不能將$my_array[3]分配給一個靜態變量。變量的內容在編譯時不知道。