PHP合并两个数组按user_id去重时如何排除首个数组已存在的用户条目
实现代码
直接提取$array1中已存在的user_id集合,再对$array2做过滤即可得到预期结果:
// 第一步:提取$array1中所有存在的user_id $existsUserIds = array_column($array1, 'user_id'); // 第二步:过滤$array2,仅保留user_id未在$array1出现过的条目 $filtered = array_filter($array2, function($item) use ($existsUserIds) { return !in_array($item['user_id'], $existsUserIds); }); // 可选:重置数组为从0开始的连续索引 $result = array_values($filtered);
大数据量优化方案
如果处理的数组规模较大,可将user_id转为数组键做匹配,查询复杂度从O(n)降到O(1),性能提升明显:
// 用user_id作为数组键,匹配效率更高 $existsUserIdMap = array_flip(array_column($array1, 'user_id')); $filtered = array_filter($array2, function($item) use ($existsUserIdMap) { return !isset($existsUserIdMap[$item['user_id']]); }); $result = array_values($filtered);
内容的提问来源于stack exchange,提问作者Jinal Gajera
相关产品推荐
相关产品推荐

