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

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com