我有一个验证函数,如果验证通过,我想返回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
。null
如果使用进行测试,则带有value的变量将返回false isset()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句