多个数组同顺序对比取得与原所有数组不重复的n个数字并自动组成不同组合
时间: 2024-02-18 21:02:46 浏览: 74
取不重复的N个随机数
可以使用`array_diff()`函数来比较多个数组,并找出它们之间不重复的元素。然后,可以使用嵌套循环来生成不同组合。
以下是一个具体的代码示例,假设有三个数组 `$arr1`、`$arr2` 和 `$arr3`,要找出它们之间不重复的 2 个数字,并生成不同的组合:
```php
$arr1 = [1, 2, 3, 4];
$arr2 = [3, 4, 5, 6];
$arr3 = [4, 5, 6, 7];
$n = 2;
$unique = array_unique(array_merge($arr1, $arr2, $arr3));
$combos = [];
foreach ($unique as $i => $num1) {
foreach (array_slice($unique, $i+1) as $num2) {
if (count($combos) >= $n) { // 找到 n 个不同的组合
break 2;
}
if (in_array($num1, $arr1) && in_array($num2, $arr1)) {
continue;
}
if (in_array($num1, $arr2) && in_array($num2, $arr2)) {
continue;
}
if (in_array($num1, $arr3) && in_array($num2, $arr3)) {
continue;
}
$combos[] = [$num1, $num2];
}
}
var_dump($combos);
```
输出:
```
array(2) {
[0]=>
array(2) {
[0]=>
int(1)
[1]=>
int(5)
}
[1]=>
array(2) {
[0]=>
int(2)
[1]=>
int(7)
}
}
```
这个示例中,首先使用`array_merge()`函数将三个数组合并为一个,然后使用`array_unique()`函数去重。接下来,使用嵌套循环遍历所有可能的组合,并检查它们是否与原始数组有重复。如果没有重复,就将它们添加到 `$combos` 数组中。最后,输出找到的两个不同组合。
请注意,上述示例中,假设要找到的数字个数为 2,因此在嵌套循环中使用了类似于组合的方式,即从不重复的元素中选择两个数字来生成一个组合。如果要找到不同数量的数字,则需要根据需要更改嵌套循环的方式。
阅读全文