Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP“;“如果为真”;数组上的测试是否总是返回true?_Php_Arrays_Return_Boolean - Fatal编程技术网

PHP“;“如果为真”;数组上的测试是否总是返回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 '

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

$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