如何获取数据集的所有组合?附PHP实现代码示例
生成数据集的指定长度排列组合
刚好我之前也处理过类似的排列需求,这个Math_Combinatorics类确实是解决这类问题的实用工具!下面是完整的实现方案:
实现思路
- 先定义好你的原始数据集和需要填充的空位数量
- 引入Combinatorics类文件
- 调用类里的
permutations()方法遍历生成所有排列,把结果收集到列表中 - 最后输出或按需使用生成的排列集合
完整代码示例
$dataset = [1, 2, 3, 4, 5]; $slots = 3; $list = []; // 引入组合类文件 require_once 'Combinatorics.php'; // 遍历生成的所有排列,存入结果数组 foreach((new Math_Combinatorics)->permutations($dataset, $slots) as $combination){ $list[] = $combination; } // 打印结果 print_r($list);
输出示例
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 1 [1] => 2 [2] => 4 ) ... )
需要注意的是,permutations()方法生成的是有序排列(比如[1,2,3]和[1,3,2]会被视为不同组合),如果你的需求是无序的组合,可以改用类中的combinations()方法。
内容的提问来源于stack exchange,提问作者clarkk
相关产品推荐
相关产品推荐

