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

用户名

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

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

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

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

两者都呼应。

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

maxhb

如手册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()将确定是否定义了变量,而不管其实际值如何。唯一有所不同的价值是nullnull如果使用进行测试,则带有value的变量将返回false isset()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果返回始终为真

来自分类Dev

如果语句始终为真

来自分类Dev

Java 数组 - 始终为真

来自分类Dev

O(n)算法,如果条件为真,则返回数组索引

来自分类Dev

Bash文件存在测试始终为真

来自分类Dev

如果语句与枚举相比始终为真

来自分类Dev

如果为真,则返回组合列表

来自分类Dev

如果条件始终为真,为什么要使用此PHP?

来自分类Dev

如果条件始终为真,为什么要使用此PHP?

来自分类Dev

如果(a = 1)为真

来自分类Dev

可为空的十进制如果始终为真

来自分类Dev

如果条件始终为真,则执行Bash脚本

来自分类Dev

PHP:检查数组是否全部为真

来自分类Dev

解析查询始终为真

来自分类Dev

RouterLinkActive "isActive" 始终为真

来自分类Dev

PHP PDO 返回真

来自分类Dev

Jest 测试 hasClass() 方法即使为真也返回假

来自分类Dev

如果条件为真,则返回现有实例

来自分类Dev

如果条件为真,则在数组中包含值

来自分类Dev

如果对象数组元素中的字段为真,则显示 div

来自分类Dev

如果值匹配返回真

来自分类Dev

如果为真,则反转布尔

来自分类Dev

如果为真:销毁类

来自分类Dev

如果为真,则计算分数

来自分类Dev

如果WordPress登录中的条件为真,则执行PHP脚本

来自分类Dev

AngularJS表单验证始终为真

来自分类Dev

如何修复“变量始终为真”或“...假”?

来自分类Dev

即使输入正确,if 语句也始终为真?

来自分类Dev

编译器:如果条件始终为真/假,该怎么办