关于PHP in_array判定的疑问,请高手解答? 20

请看一段代码:这段代码输出的内容是:array(1){["a"]=>bool(true)}b也在$test中为什么b明明没有再数组$test中,in_array('b',... 请看一段代码:

这段代码输出的内容是:
array(1) { ["a"]=> bool(true)}b也在$test中

为什么b明明没有再数组$test中,in_array('b',test)为什么会返回true呢?求解答!!
展开
 我来答
奥丁神王
2014-11-04 · TA获得超过357个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:391万
展开全部
这是因为在比较时,因为忽略了类型比较,为了和布尔型true比较,程序将‘b’转换为布尔型,值为true,所以结果为true
像这种情况还有很多
比如$test[] = 0;in_array('b', $test)也返回true;‘b'和0比较需要把‘b’转换为int型,所以转换为0,和0比较的true;
这都是因为忽略了类型的比较
in_array的第三个参数设为true,表示全等比较,也就是考虑类型
百度网友766c9f2
2014-11-04 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:57
采纳率:0%
帮助的人:72.2万
展开全部
你把索引键的值赋为布尔型的true,而不是string类型的true,结果当然不对,
<?php
$a=array();
//字符串true
$a['a']='true';
var_dump($a);
echo '<br/>';
if(in_array("b", $a)){
echo 'b存在<br/>';
}else{
echo 'b不存在';
}

?>
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-11-04
展开全部
<?php
$test= array();
$test['a']=true;

//检查给定的键名或索引是否存在于数组中要用array_key_exists()函数
if(array_key_exists("b", $test)){
echo "在!";
}else{
echo "不在!";
}

//运行结果:不在
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轻轻飘过的猪
2014-11-04 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:74.3万
展开全部
var_dump((bool)'b');

你打印一下发现字符b的布尔类型是true
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式