为什么 PHP 的 in_array 函数在传递 0 时会返回 true?


in_array 函数返回 True 的原因可能是字符串到数字的转换。当一个字符串传递给函数时,它会返回 0,而 0 正是需要搜索的值。

PHP 使用松散比较,即在比较元素时使用 == 而不是 ===。因此,比较的是它们的值,而不是类型。

另一个原因是类型转换,这意味着变量类型在代码上下文中处理。

例如,当一个浮点数赋值给一个变量时,它会变成一个浮点值。当一个字符串转换为整数时,它的行为方式与此类似。

为了避免这种行为,可以传递第三个参数,它以严格模式比较数据,其中比较值和类型。

以下是函数在传递字符串时的行为:

示例

实时演示

echo intval("Hello");

输出

这将产生以下输出:

0

更新于: 2020-04-06

250 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告