php – 为什么in_array(1,array(‘1:foo’))返回TRUE?
发布时间:2020-12-13 21:52:28 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 PHP in_array() / array_search() odd behaviour????????????????????????????????????2个 1不在array()中,代码应返回FALSE而不是TRUE.你知道为什么吗? ?phpvar_dump(in_array(1,array('1:foo'))); // TRUE,why?var_dump(in_array('1',array('
参见英文答案 >
PHP in_array() / array_search() odd behaviour????????????????????????????????????2个
1不在array()中,代码应返回FALSE而不是TRUE.你知道为什么吗? <?php var_dump(in_array(1,array('1:foo'))); // TRUE,why? var_dump(in_array('1',array('1:foo'))); // FALSE 解决方法
正如@ knittl已经说过的,这是因为类型强制.怎么了:
var_dump(in_array(1,array('1:foo'))); //PHP is going to try to cast '1:foo' to an integer,because your needle is an int. 强制转换为(int)’1:foo’,结果为整数1,所以实际上我们得到了这个: var_dump(in_array(1,array(1))); //Which is TRUE 而第二个陈述是错误的.它是错误的,因为它们都是相同的类型,PHP不再尝试任何演员.当然“1”与“1:foo”不同 var_dump(in_array('1',array('1:foo'))); //Which is FALSE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |