数学中有3组操作:交集,差异和联合(统一).在PHP中,我们可以使用数组执行此操作:
array_intersectarray_diff联盟的功能是什么?
结果数组中没有重复项(如array_intersect和array_diff).
如果索引是数字,则array_merge不会覆盖原始值,但会附加(PHP文档).
adr*_*ien 54
试试array_merge:
array_unique(array_merge($array1, $array2));
Run Code Online (Sandbox Code Playgroud)
Adrien的答案不一定需要从两个顺序编号的数组生成一个顺序编号的数组 - 以下是一些选项:
array_values(array_unique(array_merge($array1, $array2)));
Run Code Online (Sandbox Code Playgroud)
(Adrien的回答是后来重新编号键)
array_keys(array_flip($array1)+array_flip($array2))
Run Code Online (Sandbox Code Playgroud)
(将值放入键中,并使用数组union运算符)
array_merge($array1, array_diff($array2, $array1))
Run Code Online (Sandbox Code Playgroud)
(合并前从第二个数组中删除共享值)
基准测试结果(用于在我的系统上合并两个长度为1000千次的数组):
相同的测试,但两个数组非常相似(至少80%重复):
似乎使用数组union运算符来做实际联合是最快的方法.但请注意,array_flip只有当数组的值都是字符串或全部整数时才是安全的; 如果你必须生成一个对象数组的联合,我建议用array_merge和的版本array_diff.
| 归档时间: |
|
| 查看次数: |
29254 次 |
| 最近记录: |