2009-01-05 30 views
2

有什麼優勢,寫一個PHP條件是這樣的:這些是PHP條件語句相同或沒有一個有優勢的

if ($variable != NULL) { 

if (!empty($variable)) { 

if ($variable) { 

他們都不是一回事嗎?看起來最後總是最簡單的,如果你只是想知道變量是否存在。謝謝你幫我理解這裏的區別。我錯過了PHP 101的第一天。

回答

2

我同意肖恩但我將概述什麼用簡單的英語做每個:

if ($variable != NULL) { 

$variableNULL,如果它沒有被設置。這實際上與isset相同,並且與未定義的變量相同。

if (!empty($variable)) { 

一般來說,此檢查$variable作爲字符串((string) $variable)是否具有0的一個strlen然而true將使它返回false,也將是不爲0和空數組的整數。由於某種原因(我認爲是錯誤的)$variable = '0';將返回true

if ($variable) { 

這真/假支票的作用就像(boolean) $variable - 時轉換成布爾變量基本上是否返回true。

考慮它的一種方式是它的行爲與空相同,但返回相反的值。

有關(boolean) $variable(類型鑄造/雜耍)的更多信息,請參見manual page

(PHP開發者:這主要是內存,如果我錯了,在這裏請大家指正!)

+0

NULL與undefined不同。 – 2009-01-05 21:41:34

6

檢出this table以獲得PHP比較運算符的瘦身。 false,0,「」,NULL和變量之間存在許多簡單的不確定性。

+0

我從來不知道那張桌子存在。謝謝! – matpie 2009-01-05 18:37:15

2

當嚴格錯誤模式(E_STRICT)上運行,該條款

if ($variable) {} 

if ($variable != null) {} 

將拋出聲明,當這些變量不會被初始化。

Notice: Undefined variable: variable 

這些通知是代碼中的漏洞指標,因爲未初始化的使用是一個可能的安全漏洞。 (關鍵字:register_globals)。

我檢查變量的存在,最喜歡的是

if (isset($variable)) {} 

此檢查,如果變量之前已使用(讀:用一個值初始化= NULL)。

相關問題