2012-12-31 121 views
0

我剛剛在一個php文件中看到類似下面的內容,我在想爲什麼要檢查這兩個文件。

if(isset($var) && $var) { 

// Code 

} 

這是否有意義?

+1

http://php.net/manual/en/types.comparisons.php isset不是100%與布爾檢查相同 – 2012-12-31 05:13:00

回答

3

isset將返回true,如果變量已定義,則默認布爾測試將返回true,如果該變量不爲空或零。在測試其值以防止未定義的變量錯誤之前,您想使用isset

if ($var) // returns true if the variable isn't empty or zero 

if (isset($var)) // returns true if the variable is defined and not NULL 

如果PHP錯誤報告級別包括通知(E_NOTICE),測試未定義的變量會報告一個未定義的變量錯誤。

但是,在函數empty之前不需要使用isset

如果該變量不存在,則不會生成警告。這意味着empty()基本上等同於!isset($var) || $var == false

+0

當然,empty()本質上並不等同於!isset($ var)||在數組的情況下$ var == false – Webinan

3

isset - 如果它存在並且不爲NULL,將返回TRUE,否則它將爲FALSE。

在上例如。對於$var = 0

isset的第一個條件將返回true,而第二個條件將返回false。

因此,如果您想檢查變量是否設置爲&具有非零值,將使用上述條件。

+0

所以這與empty()實際上是一樣的東西? – reitermarkus

+1

@reitermarkus看看http://fr2.php.net/manual/en/function.empty.php和http://fr2.php.net/manual/en/function.isset.php – Michael

+0

我已經拿過看http://php.net/manual/en/types.comparisons.php,這幫助了我很多,但是感謝功能特定的鏈接。 – reitermarkus

1

這是一個很好的做法,在php中用「通告」報告作爲錯誤進行編碼。如果您檢查變量的值,但未設置該變量,則可能意味着您有拼寫錯誤並將其標記爲「錯誤」。然後,您可以修復您的錯字,繼續前進。如果你沒有通知,那麼你可能永遠不會發現錯字,這個變量就像空/空/假一樣(取決於你的比較),所以你可能永遠不會得到你的「真實」條件。所以打開通知並節省數小時的調試時間。

但有時可能有些時候您知道某個變量可能未被設置 - 爲了避免它被報告爲錯誤,您首先檢查該變量是否爲「set」。這就是你在代碼示例中閱讀的內容。

相關問題