2009-02-06 133 views

回答

7

使用get_defined_vars()來獲得在當前範圍內定義的變量數組,然後對照它與array_key_exists();

編輯:

,如果你想要一個功能測試的存在,你會創建一個像這樣:

function varDefined($name,$scope) { 
    return array_key_exists($name, $scope); 
} 

,並在任何給定的範圍內使用,像這樣:

$exists = varDefined('foo',get_defined_vars()); 

應工作適用於任何範圍。

1

不是很漂亮,但...

array_key_exists('var', $GLOBALS); 

(不能使用@is_null($var),因爲它計算爲true無論哪種方式[和它不是真正打壓使用@操作錯誤很好的做法.. ])

+0

不是。 is_null()對未定義的變量返回true。 – chaos 2009-02-06 19:31:36

+0

是的,注意到我發佈後。現在修復它。 – flussence 2009-02-06 19:32:14

-1

所有未設置的VAR將評估爲null:

php > $a = null; 
php > var_dump($a === null); 
bool(true) 
php > var_dump($a === $b); 
bool(true) 

(使用交互式控制檯 - PHP -a)

0

如果它位於全局範圍內,則可以嘗試檢查$ GLOBALS超全局密鑰是否存在(使用array_key_exists())。

,但你可能做錯事,如果你需要知道這一點:)

+0

$ GLOBALS,而不是$ _GLOBALS。 – chaos 2009-02-06 19:27:15

-1

不是變量默認初始化爲NULL?所以,沒有被調用的那個和你被設置爲NULL的調用沒有區別。

+0

不同之處在於它存在於任何名稱空間中的條目。 – chaos 2009-02-06 19:30:36

1

如果它是一個全球性的,你可以這樣做:

if(array_key_exists('var', $GLOBALS))