发布网友 发布时间:2022-04-22 17:37
共4个回答
热心网友 时间:2023-11-14 03:31
这是因为在比较时,因为忽略了类型比较,为了和布尔型true比较,程序将‘b’转换为布尔型,值为true,所以结果为true
像这种情况还有很多
比如$test[] = 0;in_array('b', $test)也返回true;‘b'和0比较需要把‘b’转换为int型,所以转换为0,和0比较的true;
这都是因为忽略了类型的比较
in_array的第三个参数设为true,表示全等比较,也就是考虑类型
热心网友 时间:2023-11-14 03:31
你把索引键的值赋为布尔型的true,而不是string类型的true,结果当然不对,
<?php
$a=array();
//字符串true
$a['a']='true';
var_mp($a);
echo '<br/>';
if(in_array("b", $a)){
echo 'b存在<br/>';
}else{
echo 'b不存在';
}
?>
热心网友 时间:2023-11-14 03:32
<?php
$test= array();
$test['a']=true;
//检查给定的键名或索引是否存在于数组中要用array_key_exists()函数
if(array_key_exists("b", $test)){
echo "在!";
}else{
echo "不在!";
}
//运行结果:不在
?>
热心网友 时间:2023-11-14 03:32
var_mp((bool)'b');
你打印一下发现字符b的布尔类型是true