我想了解這之間的區別:爲什麼我需要php中的isset()函數?
if (isset($_POST['Submit'])) {
//do something
}
和
if ($_POST['Submit']) {
//do something
}
在我看來,如果$ _POST [「提交」]變量是真的,那麼它被設置。爲什麼在這種情況下需要使用isset()函數?
我想了解這之間的區別:爲什麼我需要php中的isset()函數?
if (isset($_POST['Submit'])) {
//do something
}
和
if ($_POST['Submit']) {
//do something
}
在我看來,如果$ _POST [「提交」]變量是真的,那麼它被設置。爲什麼在這種情況下需要使用isset()函數?
因爲
$a = array("x" => "0");
if ($a["x"])
echo "This branch is not executed";
if (isset($a["x"]))
echo "But this will";
(也http://hk.php.net/manual/en/function.isset.php和http://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting見),如果它存在,並且不爲空,否則爲假
isset將返回TRUE。
你基本上想檢查$ _POST []變量是否已經被提交,不管值是什麼。如果您不使用isset(),某些提交如submit=0
將會失敗。
在第二個示例中,如果該密鑰未設置爲$_POST
,PHP將發出通知(在E_NOTICE
或更嚴格)。
代碼
if($_POST['Submit'])
{
//some code
}
不會WAMP工作(工作在XAMPP)
上WAMP,你將不得不使用
if (isset($_POST['Submit'])) {
//do something
}
嘗試。 :)
這聽起來更像是默認錯誤處理設置,然後是操作系統。 – alex 2010-03-17 14:03:17
如果用戶不輸入值,$ _ POST []返回NULL,我們在isset的描述說:」如果它存在,並且不爲空,否則爲假
isset將返回TRUE。 ,但在這裏isset返回真正的 「
所以我應該總是在像這些情況下使用isset函數? – zeckdude 2010-03-17 07:59:35
嘗試訪問'$ a [「x」]''也會在'$ a'內沒有定義關鍵字'x'的情況下產生'E_Notice'。使用'isset'或'array_key_exists'檢查可以避免這種情況。 – Gordon 2010-03-17 08:38:12
@Chris:總是使用'isset'來檢查某個變量的*存在*。 – kennytm 2010-03-17 09:07:33