2011-05-08 60 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

相关问题