PHP中检查数组元素是否存在于另一数组的问题排查
问题分析与解决方案
你的代码始终返回false的核心原因是**return false的位置错误**——它被放在了foreach循环的单次迭代逻辑里,只要array1的第一个元素不在array2中,函数就直接终止并返回false,完全不会继续检查后续元素。比如你的array1第一个元素是1234567,不在array2内,代码就直接结束,根本没机会检测到第三个元素0101010。
修正后的代码
把return false移到foreach循环外部,确保只有遍历完array1所有元素且都不匹配时才返回false:
foreach ($array1 as $checkThis) { if (in_array($checkThis, $array2)) { echo "checkThis exists in array2"; return true; } } // 所有元素检查完毕后才执行这里 echo "checkThis does not exist in array2"; return false;
额外优化建议
如果需要严格匹配值的类型(比如避免字符串"0101010"和数字0101010的隐式匹配问题),可以给in_array添加第三个参数true开启严格模式:
if (in_array($checkThis, $array2, true)) { echo "checkThis exists in array2"; return true; }
内容的提问来源于stack exchange,提问作者Luuc
相关产品推荐
相关产品推荐

