2011-05-08 80 views
1

以前有個問題php echo if two conditions are true,大多數人回答使用語句if(!empty($variable)){}來檢查一個變量是否爲空,而我的回答是if($variable != ''){}。我的問題是,爲什麼大多數人回答if(!empty($variable)){}if($variable != ''){}期望可讀性有什麼區別?可讀性是我目前看到的唯一區別。檢查變量是否爲空的兩種不同方法

謝謝, ATNO

+0

有上如此相似,爲 – diEcho 2011-05-08 14:22:08

+1

剛一說明you..please搜索是很多的問題:要謹慎使用'空() ',它的用途可能太廣泛。例如:如果值爲*,則使用'empty($ _ POST ['number'])''返回true,但實際用戶輸入爲「0」。 – 2011-05-08 14:41:19

+0

我想我會堅持用'!='''現在對我來說似乎是「更安全」 – afarazit 2011-05-09 02:05:05

回答

2

ead the manualř

Returns FALSE if var has a non-empty and non-zero value. 

The following things are considered to be empty: 

    * "" (an empty string) 
    * 0 (0 as an integer) 
    * 0.0 (0 as a float) 
    * "0" (0 as a string) 
    * NULL 
    * FALSE 
    * array() (an empty array) 
    * var $var; (a variable declared, but without a value in a class) 

注::

小心,如果 「0」(零作爲字符串),0(零的整數), - O(負零爲一個整數)返回true,「-0」(零作爲一個字符串(是的,我已經有一些客戶將-0寫入表單域))返回false。你需要用空()函數測試它之前投你的變量:

<?php 
$var = "-0"; 
echo empty($var); // returns false 
$var = (int) $var; // casts $var as an integer 
echo empty($vat); // returns true 
?> 
+0

@atno更好的方式來自己測試.... – diEcho 2011-05-08 14:27:25

1
empty

還考慮變量是空的,如果他們是一個0的整數,NULL,FALSE,一個空的陣列(看的返回值)。你只是檢查它是不是一個空字符串。如果變量是例如,則檢查將返回true設置爲(boolean)FALSE。

+0

謝謝,現在明白了:) – afarazit 2011-05-08 14:26:49

+0

同樣對'0'字符串返回true – 2011-05-08 14:37:49

+0

'$ var!='' '和'〜empty($ var)'返回相同的結果。我在什麼地方? '$ var = FALSE; if($ var!='')echo'Not empty'; } else { echo'Empty'; } if(!empty($ var)){ echo'Not empty'; } else { echo'Empty'; } $ var = 0; if($ var!='')echo'Not empty'; } else { echo'Empty'; } if(!empty($ var)){ echo'Not empty'; } else { echo'Empty'; } $ var = TRUE; if($ var!='')echo'Not empty'; } else { echo'Empty'; } if(!empty($ var)){ echo'Not empty'; } else { echo'Empty'; }' – afarazit 2011-05-08 14:58:41