gpt4 book ai didi

php - 如何使用 array_unique 从多个数组中获取唯一值?

转载 作者:行者123 更新时间:2023-12-03 23:08:51 26 4
gpt4 key购买 nike

有没有办法将两个或多个数组放入 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);

返回 ['thing', 'another_thing', 'same_thing'];

$try_it = array_unique($one_array, $two_arrays);

给你一个警告

Warning: array_unique() expects parameter 2 to be integer, array given

并返回null

$try_it = array_unique($one_array, $two_arrays, $or_more_arrays);

还会给你一个警告

Warning: array_unique() expects at most 2 parameters, 3 given

并返回null


您问题第二部分的答案是YES

要使用array_unique 获取唯一值,您必须拥有一个 值数组。正如 u_mulder 所评论的那样,您可以通过在使用 array_unique 之前使用 array_merge 将各种输入数组合并为一个来做到这一点。

$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_unique 之前将外部数组解包到数组合并中以将其展平。

$unique = array_unique(array_merge(...$multi_array_example));

或者在参数解包之前的旧 PHP 版本 (<5.6) 中,您可以将 array_reducearray_merge 一起使用。

$unique = array_unique(array_reduce($multi_array_example, 'array_merge', []));

返回 [1, 2, 3, 4, 5, 6]

关于php - 如何使用 array_unique 从多个数组中获取唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com