1

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

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

   // ...do some code

}

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

4

2 回答 2

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

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

于 2013-11-14T04:04:21.357 回答
3

他们实际上都是falsey。所以你可以做

if(!$i) {

}

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

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

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

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

这就是等效性发挥作用的地方。这是一个比较运算符。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
}
于 2013-11-14T04:06:37.153 回答