php - 如果 needle 为 0,in_array 返回 true

标签 php arrays conditional-statements

<分区>

我对 in_array 函数有疑问。下面的测试返回 true:

in_array(0, array('card', 'cash'))

这怎么可能,我该如何预防?

不过

in_array(null, array('card', 'cash'))

返回 false

最佳答案

将任何不以数字开头的字符串转换为数字会导致 PHP 中的 0。这正是将 0 与某个字符串进行比较时发生的情况。查看PHP docs有关如何完成各种类型之间的比较的详细信息。

使用 in_array 的第三个参数(将其设置为 true)以避免松散的类型比较。

in_array(0, array('card', 'cash'), true) === false

关于php - 如果 needle 为 0,in_array 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787762/

相关文章:

performance - 当前 CPU 的成本更高 : arithmetic operations or conditionals?

php - 指向数据库的符号链接(symbolic link)在/var/www 中不起作用

javascript - 如何将对象数组映射到具有重复值标识符的数组?

php - 计算子/子数组中的条目

php - "elseif"和 "else if"完全是同义词吗?

crystal-reports - Crystal 报表中的条件计数()

php - mysql查询选择一列,其中 ""仅返回一个结果

php - Laravel - 限制特定 API 路由的速率

php - 下载一个用 PHP 强制作为附件的文件

c++ - 如何最好地为 C++11 中的 unique_ptr 中的普通数组制作迭代器?