多个数组同顺序对比取得与原所有数组不重复的所有数字并自动组成不同组合
时间: 2024-02-18 13:02:51 浏览: 67
可以使用 PHP 中的 array_diff() 函数来取得多个数组之间的差集,然后使用递归来组成所有不同的组合。
以下是一个示例代码,假设有三个数组 $arr1、$arr2、$arr3,希望取得这三个数组之间的差集,并且自动组成所有不同的组合:
```
<?php
$arr1 = [1, 2, 3, 4];
$arr2 = [2, 3, 4, 5];
$arr3 = [3, 4, 5, 6];
// 取得差集
$diff = array_diff(array_unique(array_merge($arr1, $arr2, $arr3)), $arr1, $arr2, $arr3);
// 递归组成所有不同的组合
$combinations = getCombinations($diff);
function getCombinations($arr) {
$combinations = [];
// 如果只有一个元素,直接返回这个元素
if (count($arr) == 1) {
array_push($combinations, [$arr[0]]);
return $combinations;
}
// 递归获取子集
$subCombinations = getCombinations(array_slice($arr, 1));
foreach ($subCombinations as $subCombination) {
// 添加当前元素到子集中
array_push($subCombination, $arr[0]);
// 添加子集到结果数组中
array_push($combinations, $subCombination);
// 添加当前元素到结果数组中
array_push($combinations, [$arr[0], ...$subCombination]);
}
return $combinations;
}
print_r($combinations);
?>
```
上述代码中用到了 array_diff() 函数来取得差集,array_unique() 函数来去重,array_merge() 函数来合并数组。getCombinations() 函数使用递归来组成所有不同的组合。最终输出所有不同的组合。
阅读全文