<?php
$var = NULL;
var_dump(isset($var)); // bool(false)
var_dump(isset($unset_var)); // bool(false)
?>
isset($ var)應該返回TRUE,因爲它已被設置爲NULL。PHP:如何檢查是否已經啓動了var?當var已被設置爲NULL時,isset返回false
有什麼辦法可以檢查這個嗎?
謝謝!
<?php
$var = NULL;
var_dump(isset($var)); // bool(false)
var_dump(isset($unset_var)); // bool(false)
?>
isset($ var)應該返回TRUE,因爲它已被設置爲NULL。PHP:如何檢查是否已經啓動了var?當var已被設置爲NULL時,isset返回false
有什麼辦法可以檢查這個嗎?
謝謝!
使用get_defined_vars()來獲得在當前範圍內定義的變量數組,然後對照它與array_key_exists();
編輯:
,如果你想要一個功能測試的存在,你會創建一個像這樣:
function varDefined($name,$scope) {
return array_key_exists($name, $scope);
}
,並在任何給定的範圍內使用,像這樣:
$exists = varDefined('foo',get_defined_vars());
應工作適用於任何範圍。
不是很漂亮,但...
array_key_exists('var', $GLOBALS);
(不能使用@is_null($var)
,因爲它計算爲true無論哪種方式[和它不是真正打壓使用@操作錯誤很好的做法.. ])
所有未設置的VAR將評估爲null:
php > $a = null;
php > var_dump($a === null);
bool(true)
php > var_dump($a === $b);
bool(true)
(使用交互式控制檯 - PHP -a)
如果它位於全局範圍內,則可以嘗試檢查$ GLOBALS超全局密鑰是否存在(使用array_key_exists())。
,但你可能做錯事,如果你需要知道這一點:)
$ GLOBALS,而不是$ _GLOBALS。 – chaos 2009-02-06 19:27:15
如果它是一個全球性的,你可以這樣做:
if(array_key_exists('var', $GLOBALS))
不是。 is_null()對未定義的變量返回true。 – chaos 2009-02-06 19:31:36
是的,注意到我發佈後。現在修復它。 – flussence 2009-02-06 19:32:14