微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – in_array()总是返回TRUE

这个问题在这里已经有一个答案:> PHP in_array() / array_search() odd behaviour2
$arrValue = array('first','second');
$ret = in_array(0,$arrValue);
var_dump($ret);
var_dump($arrValue);

以上示例给出以下结果:

bool(true)
array(2) {
  [0]=> string(5) "first"
  [1]=> string(6) "second"
}

为什么in_array()匹配针0到任何给定的干草堆?

这是因为该功能使用了非严格的比较.数组中的字符串与整数0进行比较.某些类型转换正在发生数据丢失,并且都被视为相同:
var_dump(0 == 'first'); //  bool(true)

所以解决这个问题,可以使用第三个参数设置为true来请求严格的比较.

$ret = in_array(0,$arrValue,true);

牢记,严格严格.在严格的比较中,0不等于“0”.

文件http://nl3.php.net/in_array

原文地址:https://www.jb51.cc/php/130772.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐