如何使用 array_unique 从多个数组中获取唯一值?
How can you get unique values from multiple arrays using array_unique?
有什么方法可以将两个或多个数组放入 array_unique() 函数中吗?
如果没有,是否有任何其他解决方案可以从多个数组中获得唯一的结果?
默认情况下,array_unique()
接受两个参数,数组类型的array
接受输入数组,第二个参数,int类型的sorting
接受排序行为。您可以在 PHP manual for array_unique()
.
中阅读更多相关信息
但是正如@u_mulder 所建议的那样,您首先合并数组,可能合并到一个临时数组中(您可以学习如何做到这一点 here),然后应用 array_unique
到那个临时数组。
你问题第一部分的答案是否。
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);
returns ['thing', 'another_thing', 'same_thing'];
$try_it = array_unique($one_array, $two_arrays);
给你一个警告
Warning: array_unique() expects parameter 2 to be integer, array given
和returns null
.
$try_it = array_unique($one_array, $two_arrays, $or_more_arrays);
同时给你一个警告
Warning: array_unique() expects at most 2 parameters, 3 given
和returns null
.
你问题第二部分的答案是是。
要使用 array_unique 获取唯一值,您必须有 一个 个值数组。正如 u_mulder 评论的那样,您可以通过在使用 array_unique
.
之前使用 array_merge
将各种输入数组合并为一个数组来做到这一点
$unique = array_unique(array_merge($one_array, $two_arrays, $or_more_arrays));
returns
['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_unique
.
之前将外部数组解包到数组合并中以展平它
$unique = array_unique(array_merge(...$multi_array_example));
或者在参数解包之前的旧 PHP 版本 (<5.6) 中,您可以使用 array_reduce
和 array_merge
。
$unique = array_unique(array_reduce($multi_array_example, 'array_merge', []));
returns [1, 2, 3, 4, 5, 6]
有什么方法可以将两个或多个数组放入 array_unique() 函数中吗? 如果没有,是否有任何其他解决方案可以从多个数组中获得唯一的结果?
默认情况下,array_unique()
接受两个参数,数组类型的array
接受输入数组,第二个参数,int类型的sorting
接受排序行为。您可以在 PHP manual for array_unique()
.
但是正如@u_mulder 所建议的那样,您首先合并数组,可能合并到一个临时数组中(您可以学习如何做到这一点 here),然后应用 array_unique
到那个临时数组。
你问题第一部分的答案是否。
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);
returns ['thing', 'another_thing', 'same_thing'];
$try_it = array_unique($one_array, $two_arrays);
给你一个警告
Warning: array_unique() expects parameter 2 to be integer, array given
和returns null
.
$try_it = array_unique($one_array, $two_arrays, $or_more_arrays);
同时给你一个警告
Warning: array_unique() expects at most 2 parameters, 3 given
和returns null
.
你问题第二部分的答案是是。
要使用 array_unique 获取唯一值,您必须有 一个 个值数组。正如 u_mulder 评论的那样,您可以通过在使用 array_unique
.
array_merge
将各种输入数组合并为一个数组来做到这一点
$unique = array_unique(array_merge($one_array, $two_arrays, $or_more_arrays));
returns
['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_unique
.
$unique = array_unique(array_merge(...$multi_array_example));
或者在参数解包之前的旧 PHP 版本 (<5.6) 中,您可以使用 array_reduce
和 array_merge
。
$unique = array_unique(array_reduce($multi_array_example, 'array_merge', []));
returns [1, 2, 3, 4, 5, 6]