! (NULL || 0 ||'')如果PHP中的条件同时存在

时间:2013-11-14 04:02:07

标签: php if-statement

如果我想检查变量,我需要这样做:

if ( $i != '' || $i != 0 || $i != NULL ) {

   // ...do some code

}

这3个检查是否可以通过某些php函数或技巧以某种方式合并为1?

2 个答案:

答案 0 :(得分:3)

if (!empty($i)) {
    // ... do some code
}

请参阅http://php.net/manual/function.empty.php

答案 1 :(得分:3)

所有这些都是实际的false y。所以你可以做到

if(!$i) {

}

http://php.net/manual/en/language.types.boolean.php

我应该详细说明为什么OP有一些不好的假设。 PHP将评估为false的内容列表很长

  

转换为布尔值时,以下值被视为FALSE:

     
      
  • 布尔值FALSE本身
  •   
  • 整数0(零)
  •   
  • 浮点数0.0(零)
  •   
  • 空字符串,字符串“0”
  •   
  • 包含零元素的数组
  •   
  • 特殊类型NULL(包括未设置的变量)
  •   
  • 从空标签创建的SimpleXML对象
  •   

这是等效性发挥作用的地方。这是一个comparison operator。 OP有这个

if ( $i != '' || $i != 0 || $i != NULL )

这三个实际上都是同一个测试。拿这个代码

$i = 0;
if($i == '') {
    echo 'true';
}
if($i == 0) {
    echo 'true';
}
if($i == NULL) {
    echo 'true';
}

所有三个陈述都会响起。因此,如果您想知道$i实际上是NULL还是false而不是0(并且some functions将返回两者),您必须使用不同的运营商。 ===用于查看两者是否相等而不是简单相等。

$i = 0;
if($i == NULL) {
    echo 'true'; //This will succeed
}
if($i === NULL) {
    echo 'true'; //This will NOT succeed
}