2012-02-11 46 views
1

目前,每當我試圖確定當一個變量沒有定義我使用的代碼Determing空值,最好的方式做到這一點

如果($變量==「」)

但是我有已經告訴人們使用的功能

如果(空($變量))

這一讀,如果該值是0返回false,和我有很多數組值是零那不能是返回false。我總是可以添加|| $變量== 0)來跳過這個。

但我所問的是爲什麼這是一個確定空變量的首選方法,它是效率還是有更多的呢?

+0

這一切都取決於您的需求。 isset()和empty()是使用的主要方法。 – Brad 2012-02-11 02:12:56

+0

爲什麼這些方法優先於if($ var ==「」)的簡單if語句? – JimmyBanks 2012-02-11 02:13:59

回答

1

如果你需要知道,使用嚴格的類型比較:

if (empty($variable) && $variable !== 0) // !== instead of != 

一般來說,你應該使用isset() - 如果變量尚未定義,則返回false:

$a = 4; 
echo isset($a) ? 'a' : 'no a'; // a 
echo isset($b) ? 'b' : 'not to b'; // not to b 
+0

沒問題isset實際上對於我所要求的更有意義,這仍然讓我想知道,使用isset或empty的實際推理對if($ var ==「」)是有利的,因爲這會導致代碼運行正常 – JimmyBanks 2012-02-11 02:18:57

+1

如果變量尚未設置,則取決於PHP的配置方式,它可能會繼續愉快地運行,或者可能會出錯並停止。如果它繼續下去,則需要**顯着更長的時間來嘗試從尚不存在的變量讀取(閱讀:通常不值得關心)。使用'isset()'的主要原因是因爲它是**正確的方法**來檢查:P哦,以及致命的錯誤。這也是一個很大的問題。 – Joe 2012-02-11 02:21:58

+0

好,所以它的主要效率,我從來沒有收到它的錯誤信息,我有錯誤信息。生病開始我的代碼切換到正確的使用,謝謝。 – JimmyBanks 2012-02-11 02:47:24

-1

好吧,這是我的方式,我不認爲它有什麼問題...

if(!$variable) 

對於「」,0,(未定義)等返回true。表單輸入的所有空白值。

+1

如果未設置$ variable,將會生成一個錯誤。 – Umbrella 2012-02-11 02:36:46

+0

它從來沒有爲我...這是爲什麼? – Deji 2012-02-11 02:38:38

+0

您的PHP的錯誤報告設置不得包含通知級別錯誤。或者,它正在記錄到您沒有檢查的文件。可能是錯誤報告級別。 – Umbrella 2012-02-11 02:42:44

相關問題