
使用 array_merge() 合并数组后配合 array_unique() 去重,即可高效实现按值合并、自动剔除重复元素,无需手动遍历或条件判断。
使用 `array_merge()` 合并数组后配合 `array_unique()` 去重,即可高效实现按值合并、自动剔除重复元素,无需手动遍历或条件判断。
在 PHP 中,若需将两个(或多个)一维数值或字符串数组按值合并,并确保结果中无重复项(如 [1,2,3] 与 [2,3,4,5] 合并为 [1,2,3,4,5]),最简洁、高效且原生支持的方式是组合使用 array_merge() 和 array_unique():
$a = [1, 2, 3]; $b = [2, 3, 4, 5]; $result = array_unique(array_merge($a, $b)); // 注意:array_unique 会保留原始键名(如 0=>1, 1=>2, ...),若需重置索引: $result = array_values(array_unique(array_merge($a, $b))); print_r($result); // 输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
✅ 优势说明:
-
array_merge()按顺序拼接所有数组的值(忽略键名),天然适配索引数组; -
array_unique()基于值比较去重(默认SORT_STRING模式,对整数/字符串均安全),时间复杂度优于手写foreach + in_array()(后者为 O(n×m)); - 整个操作为单行表达式,语义清晰,性能可靠,且完全不依赖 Laravel 或第三方库。
⚠️ 注意事项:
-
array_unique()返回的数组保留原始键名,若后续需连续数字索引(如用于for循环或 JSON 序列化),务必用array_values()重置; - 对于含混合类型(如
null,false,0,'')的数组,注意 PHP 类型松散比较规则——必要时可传入SORT_REGULAR标志提升准确性:$result = array_values(array_unique(array_merge($a, $b), SORT_REGULAR));
- 此方法适用于一维数组;若处理多维数组(如二维关联数组按某字段合并),则需
usort+ 自定义逻辑或array_column配合array_intersect_key等进阶方案。
总结:array_merge() + array_unique() 是 PHP 原生解决“按值合并去重”问题的标准范式——简洁、健壮、可读性强,应作为首选方案。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











