You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:55:17