PHP“;“如果为真”;数组上的测试是否总是返回true?
我有一个验证函数,如果验证通过,我想返回true;如果验证失败,我想返回一个错误数组。但是,当我检查函数是否返回true时,即使返回的值是数组,它也会返回true。为什么会这样?作为我意思的另一个例子:PHP“;“如果为真”;数组上的测试是否总是返回true?,php,arrays,return,boolean,Php,Arrays,Return,Boolean,我有一个验证函数,如果验证通过,我想返回true;如果验证失败,我想返回一个错误数组。但是,当我检查函数是否返回true时,即使返回的值是数组,它也会返回true。为什么会这样?作为我意思的另一个例子: $array = ['test' => 'test']; if ($array == true) { echo 'true'; } 我也试着用一个字符串来做同样的事情: $string = 'string'; if ($string == true) { echo '
$array = ['test' => 'test'];
if ($array == true)
{
echo 'true';
}
我也试着用一个字符串来做同样的事情:
$string = 'string';
if ($string == true)
{
echo 'true';
}
这两种说法都是正确的
为什么会这样?如果我们能做到这一点,那么为什么我们需要isset()函数呢?这是手册中记录的预期行为 因此,空字符串或数组将计算为
false
,非空字符串或数组将计算为true
另一方面,
isset()
将确定是否定义了变量,而不管它的实际值如何。唯一不同的值是null
。如果使用isset()
测试值为null
的变量,则该变量将返回false。这是手册中记录的预期行为
因此,空字符串或数组将计算为false
,非空字符串或数组将计算为true
另一方面,
isset()
将确定是否定义了变量,而不管它的实际值如何。唯一不同的值是null
。如果使用isset()
测试值为null的变量,则返回false。您可以对数组使用count()
,如果为0,则返回false如果($array==true)检查tooisset()的类型将检查变量是否存在,如果($variable)将检查$variable值是否为0或false。声明的$variables
或空字符串将返回true。除非将$variables
声明为false。可以对数组使用count()
,如果为0,则为false如果($array==true)检查tooisset()的类型将检查变量是否存在,如果($variable)将检查$variable值是否为0或false。声明的$variables
或空字符串将返回true。除非将$variables
声明为false。
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