为什么 PHP 的 in_array 函数在传递 0 时会返回 true?
in_array 函数返回 True 的原因可能是字符串到数字的转换。当一个字符串传递给函数时,它会返回 0,而 0 正是需要搜索的值。
PHP 使用松散比较,即在比较元素时使用 == 而不是 ===。因此,比较的是它们的值,而不是类型。
另一个原因是类型转换,这意味着变量类型在代码上下文中处理。
例如,当一个浮点数赋值给一个变量时,它会变成一个浮点值。当一个字符串转换为整数时,它的行为方式与此类似。
为了避免这种行为,可以传递第三个参数,它以严格模式比较数据,其中比较值和类型。
以下是函数在传递字符串时的行为:
示例
echo intval("Hello");
输出
这将产生以下输出:
0
广告