首页 >后端开发 >php教程 >为什么 PHP 中的 in_array() 对于不存在的值返回 True?

为什么 PHP 中的 in_array() 对于不存在的值返回 True?

Barbara Streisand
Barbara Streisand原创
2024-12-22 11:45:09227浏览

Why Does `in_array()` Return True for a Non-Existent Value in PHP?

数组内的 TRUTH 特殊行为

PHP 的 in_array() 函数在处理包含布尔值 TRUE 的数组时表现出意外的行为。

让我们考虑以下内容array:

$arr = [TRUE, "some string", "something else"];

令人惊讶的是,尽管“test”不在数组中,但 in_array("test", $arr) 返回 true。 array_search("test", $arr) 也会出现同样的异常结果,它返回 0。

此行为不是错误,而是一个有据可查的功能。

严格来说说:理解第三个参数

in_array() 和 array_search() 都拥有可选的第三个参数参数 $strict,默认为 FALSE。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ])

这意味着,默认情况下,两个函数都采用松散比较 (==)。他们仅根据平等来评估价值观,而忽略其类型。因此,在给定的示例中,由于类型杂乱, TRUE == "any non-empty string" 返回 true。

强制严格:将 $strict 设置为 TRUE

为了确保比较准确,您可以将 $strict 设置为 TRUE。这样做会强制 PHP 使用严格比较 (===),同时检查所比较值的值和类型。

$result = in_array("test", $arr, TRUE);
var_dump($result); // Output: bool(false)

在这种情况下,in_array() 正如预期的那样正确返回 false。

请记住,在使用 in_array() 和 array_search() 时,理解类型杂耍的细微差别和 $strict 的作用至关重要。这些函数提供了强大的搜索功能,但如果忽略这些微妙之处,它们的行为可能是不可预测的。

以上是为什么 PHP 中的 in_array() 对于不存在的值返回 True?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn