PHP使用array_search比较两个相同数组输出结果不一致问题
问题原因
核心是PHP弱类型判断和array_search函数的返回值规则共同作用的结果:
array_search匹配到目标元素时会返回该元素对应的数组下标,匹配失败才会返回布尔值false。你代码里第一个元素1在数组$a中的下标为0,PHP在做if条件判断时,会自动将整型0转换为布尔值false,因此触发了else分支输出No。- 其余元素的下标都是大于0的正整数,弱类型转换后为布尔值
true,因此都输出Yes。
修复方案
将条件判断改为严格比较,明确区分返回值为0和false的情况即可,修改后的判断逻辑如下:
if (array_search($a2[$i], $a) !== false) { echo "Yes","<br>", $a2[$i]; }else{ echo "No","<br>", $a2[$i]; }
!==是PHP的不全等运算符,会同时校验值和变量类型,只有当array_search真正返回布尔值false时才会进入else分支,符合预期判断逻辑。
内容的提问来源于stack exchange,提问作者Netman 9297
相关产品推荐
相关产品推荐

