2011-12-27 31 views
0

在此函數中使用靜態$ var可行,但我想知道是否有更有效的方式來處理這種情況。在PHP函數中使用靜態變量

function static_test() { 
    static $var = FALSE; 
    if (! $var) $var = date('Ymd'); 
    // do some stuff with $var 
} 

我想知道是否有可能做更接近這個...或其他聲明靜態$ var。

function static_test() { 
    static $var = date('Ymd'); 
    // do some stuff with $var 
} 

你會怎麼做?

+4

什麼是你真正想達到什麼目的? – bobbymcr 2011-12-27 00:34:40

+0

我認爲這是一個很好的閱讀你http://www.php.net/manual/en/language.variables.scope.php,特別是它談論靜態變量搜索頁面上的「使用靜態變量」你不能用一個表達式來聲明一個靜態變量,它甚至有一些很好的例子 – rroche 2011-12-27 00:47:00

+0

我想不出比上面第二個例子更好或者更明確的解釋方法。我想知道是否有可能用函數的值聲明一個靜態變量。我知道它可以像第一個例子那樣做。 – Poe 2011-12-27 00:47:33

回答

1

第二個選項幾乎沒有問題。正如你可以在這裏閱讀:http://www.php.net/manual/en/language.variables.scope.php

... [靜態變量]只能在函數第一次調用初始化...

所以沒有必要爲這一段代碼: if (! $var) $var = date('Ymd');

然而,你需要一個虛擬:

$dummy=date('Ymd'); static $var=$dummy;

+0

謝謝@Alfredo採取現在可以用一個有效的選項來回答這個問題,而不是降低投票率並留下一個非建設性的評論。 – Poe 2011-12-27 01:05:28

+0

您是否測試了$ var的$ dummy初始化?我有我的疑惑,因爲它特別說明不喜歡錶達式的值, – rroche 2011-12-27 01:21:57

+0

@rroche,我沒有測試它。由於這個問題被低估,我沒有進一步討論。我決定,我的第一個例子工作將是我繼續編寫它的方式,如果我需要一個函數中的靜態變量。 – Poe 2011-12-27 01:33:31

0

第二個例子根本不在PHP語法中。我討厭靜態var的用法,但尤其在這種情況下。我會用一個班。