PHP中如何检查数组值是否存在于含逗号分隔值的目标数组?
解决PHP数组值存在性检查的问题
你的问题出在$vidDB数组的结构上:里面的6,7是一个逗号分隔的字符串,而不是单独的数值元素,同时$vid里的7是整数类型,直接用array_intersect()会因为类型不匹配、元素结构不同而找不到交集。
解决方案:先处理$vidDB数组,拆分字符串元素为单个数值
我们需要先把$vidDB里所有带逗号的字符串拆分成独立的数值,再把整个数组转换成纯数值的一维数组,之后再做存在性检查。
步骤1:处理数组
// 初始化处理后的数组 $processedVidDB = []; foreach ($vidDB as $item) { // 拆分逗号分隔的字符串,同时把每个部分转成整数(避免类型问题) $splitItems = array_map('intval', explode(',', $item)); // 把拆分后的元素合并到新数组里 $processedVidDB = array_merge($processedVidDB, $splitItems); }
处理后$processedVidDB会变成:[5, 4, 6, 7],这样就和$vid的结构、类型完全匹配了。
步骤2:检查值是否存在
现在你可以用两种方式检查:
- 方式1:用
array_intersect()
$commonValues = array_intersect($vid, $processedVidDB); if (!empty($commonValues)) { echo "值7存在于$vidDB数组中"; } else { echo "值7不存在于$vidDB数组中"; }
- 方式2:用
in_array()更直接
if (in_array(7, $processedVidDB)) { echo "值7存在于$vidDB数组中"; } else { echo "值7不存在于$vidDB数组中"; }
补充说明
如果你的$vidDB里可能有带空格的字符串格式(比如"6, 7"),可以在拆分前先去掉空格:
$splitItems = array_map('intval', explode(',', str_replace(' ', '', $item)));
内容的提问来源于stack exchange,提问作者user8625234
相关产品推荐
相关产品推荐

