繁体   English   中英

PHP对数组的“如果为true”测试始终返回true?

[英]PHP “If true” test on array always returns true?

我有一个验证函数,如果验证通过,我想返回true,或者如果验证失败,则返回错误数组。 但是,当我检查函数是否返回true时,即使返回的值是数组,它也返回true。 为什么是这样? 作为我的意思的另一个例子:

$array = ['test' => 'test'];
if ($array == true)
  {
  echo 'true';
  }

并且我还尝试了一个字符串:

$string = 'string';
if ($string == true)
  {
  echo 'true';
  }

两者都呼应。

为什么是这样? 如果我们能够做到这一点,那为什么我们需要isset()函数呢?

如手册http://php.net/manual/en/types.comparisons.php中所述,这是预期的行为

Expression             gettype()  empty()   is_null()   isset() boolean
-----------------------------------------------------------------------
$x = array();          array      TRUE      FALSE       TRUE    FALSE
$x = array('a', 'b');  array      FALSE     FALSE       TRUE    TRUE
$x = "";               string     TRUE      FALSE       TRUE    FALSE
$x = "php";            string     FALSE     FALSE       TRUE    TRUE

因此,空字符串或数组的计算结果为false ,非空字符串或数组的计算结果为true

另一方面, isset()将确定是否定义了变量,无论其实际值如何。 唯一有所不同的值是null 如果使用isset()测试,则值为null的变量将返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM