如何在多维关联数组中查找us_states_ids字段的重复id值
PHP实现多维数组中重复州ID的查找
核心思路
先将所有子项的us_states_ids字段中的ID汇总到一个一维数组中,统计每个ID的出现次数,最后筛选出出现次数≥2的ID即为目标重复值。
实现代码
通用兼容写法
// 此处替换为你的原始数组 $originalArray = [ [ "url" => "http://www.kerluke.net/qui-sint-debitis-quo-et-suscipit-dolores-dolor-quae", "us_states_ids" => ["15", "16"] ], [ "url" => "http://www.migato.net/qui-sint-debitis-quo-et-suscipit-dolores-dolor-quae", "us_states_ids" => ["15", "24", "28"] ] ]; $allStateIds = []; // 遍历收集所有州ID foreach ($originalArray as $item) { foreach ($item['us_states_ids'] as $stateId) { $allStateIds[] = $stateId; } } // 统计每个ID的出现次数 $idOccurrences = array_count_values($allStateIds); // 筛选出重复ID(出现次数≥2) $duplicateIds = array_keys(array_filter($idOccurrences, function($count) { return $count >= 2; })); // 输出结果,示例中输出为 Array ( [0] => 15 ) print_r($duplicateIds);
简洁写法(PHP 7.4+ 支持)
可以用数组列提取+数组合并简化收集ID的步骤:
// 直接提取所有us_states_ids并合并为一维数组 $allStateIds = array_merge(...array_column($originalArray, 'us_states_ids')); // 后续统计、筛选逻辑和上方一致
内容的提问来源于stack exchange,提问作者Ebuen Clemente Jr.
相关产品推荐
相关产品推荐

