【问题标题】:What values are == NULL but not === NULL in PHP? [duplicate]PHP 中 == NULL 但不是 === NULL 的值是什么? [复制]
【发布时间】:2011-12-20 15:49:29
【问题描述】:

可能重复:
Null vs. False vs. 0
How does php cast boolean variables?

我知道$value == NULL 的某些值会返回 true 而$value === NULL 不会返回 true,但是否有这些值的完整列表?

另外,isset($value) 是否等同于$value === NULLempty($value) 是否等同于$value == NULL

【问题讨论】:

  • $value === NULL 为真的唯一时间是$value = NULL,或者未定义。
  • 两个重复问题都没有解决布尔值或整数以外的类型。例如 array() == NULL 与 array() !== NULL。我正在寻找比提供的更完整的列表。

标签: php null


【解决方案1】:
【解决方案2】:

NULL === NULL

没有别的。因此,如果一个函数返回 NULL,那么使用 === 进行检查将返回 true。

此外,isset($value) 是否等同于 $value === NULL 和 empty($value) 是否等同于 $value == NULL?

不,不严格。这两个是“语言结构”而不是函数。它们只接受变量名,isset 接受多个参数,并且在使用未设置的变量时会放宽警告。

【讨论】:

    【解决方案3】:

    三等号的目的是确保类型也匹配。只使用 ==,PHP 执行真假逻辑,意思是 0==null, 0=='', null=='' 都是真,但是 0===null, 0==='', null== ='' 都是假的。

    同样,'90210'==90210 为真,但 '90210'===90210 为假。

    【讨论】:

      【解决方案4】:

      我建议您阅读以下内容:

      关于NULLhttp://php.net/manual/en/language.types.null.php
      关于empty()http://php.net/manual/en/function.empty.php(你错了!)
      关于isset()http://php.net/manual/en/function.isset.php

      从官方文档来看,它们的解释性很强。

      【讨论】:

        【解决方案5】:

        转换为布尔值时计算结果为 FALSE 的任何值都是 == NULL

        那就是:

          (bool) FALSE
           (int) 0
         (float) 0.0
        (string) '' // an empty string
        (string) '0'
         (array) array()
         // An object with zero member variables (PHP 4 only)
         // SimpleXML objects created from empty tags
        

        而且,很明显,NULL 本身。但只有NULL无值的变量是=== NULL

        This 可能有助于澄清一些事情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2020-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多