有没有办法将两个或更多数组放入array_unique()函数? 如果没有,是否有其他解决方案可以从多个阵列中获得独特的结果?
答案 0 :(得分:5)
问题第一部分的答案是否。
The array_unique function definition in the PHP manual表示array_unique
只接受两个参数,一个数组和一个可选的整数来确定函数的排序行为。
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
不是采用手册的话,而是一些测试数组。
$one_array = ['thing', 'another_thing', 'same_thing', 'same_thing'];
$two_arrays = ['A', 'B', 'C', 'thing', 'same_thing'];
$or_more_arrays = ['same_thing', 1, 2, 3];
一些测试显示该功能确实如宣传的那样工作:
$try_it = array_unique($one_array);
返回['thing', 'another_thing', 'same_thing'];
$try_it = array_unique($one_array, $two_arrays);
给你一个警告
警告:array_unique()期望参数2为整数,给定数组
并返回null
。
$try_it = array_unique($one_array, $two_arrays, $or_more_arrays);
也会给你一个警告
警告:array_unique()最多需要2个参数,3个给定
并返回null
。
问题第二部分的答案是是。
要使用array_unique获取唯一值,您必须拥有一个值数组。正如u_mulder所评论的那样,您可以使用array_merge
在使用array_unique
之前将各种输入数组合并为一个来完成此操作。
$unique = array_unique(array_merge($one_array, $two_arrays, $or_more_arrays));
返回
['thing', 'another_thing', 'same_thing', 'A', 'B', 'C', 1, 2, 3];
如果不是几个单独的数组变量,而是有一个像这样的数组数组:
$multi_array_example = [
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]
];
然后,您可以使用array_reduce
与array_merge
将array_unique
合并为一个数组,然后再使用$unique = array_unique(array_reduce($multi_array_example, 'array_merge', []));
。
[1, 2, 3, 4, 5, 6]
返回setTimeout()
答案 1 :(得分:0)
默认情况下,array_unique()
采用类型数组的两个参数array
采用输入数组,而类型int的第二个参数sorting
采用排序行为。您可以在PHP manual for array_unique()
。
但是正如@u_mulder所建议的,你首先合并数组,可能是一个临时数组(你可以学习如何做到here),然后将array_unique
应用于那个临时数组。 / p>