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


! ( NULL || 0 || '' ) if condition in PHP at the same time

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

if ( $i != '' || $i != 0 || $i != NULL ) {
   // ...do some code
}

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

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

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

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

if(!$i) {
}

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

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

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

  • 布尔值 FALSE 本身
  • 整数 0(零)
  • 浮点数 0.0(零)
  • 空字符串和字符串"0"
  • 包含零元素的数组
  • 特殊类型 NULL(包括未设置的变量)
  • 从空标记创建的简单 XML 对象

这就是等效性发挥作用的地方。这是一个比较运算符。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(并且某些函数将同时返回两者),则必须使用不同的运算符。 ===用于查看两者是否等效,而不是简单地相等。

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