现在有这样一个数组:$a = [1,2,3,4,5];我想通过某种算法得到一下的结果:1,21,31,41,52,32,42,53,43,54,5也就是两两一组,另外还有可能三个一组这样怎么算呢?有大神知道吗?
2 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
支持任意数量组合,其中combine($arr, 3)方法中的3表示以3个为1组。
这些组合中去除了会出现重复数字的组合。
<?php$arr = [1, 2, 3, 4, 5];function combine($arr, $length) { $result = []; _combine($arr, $length, 0, [], $result); return $result; }function _combine($arr, $length, $start, $path, &$result) { if(count($path)==$length) { return $result[] = $path; } for ($i=$start; $i<count($arr); $i++) { if($i==$start || $arr[$i]!=$arr[$i-1]) { $path[]=$arr[$i]; _combine($arr, $length, $i+1, $path, $result); array_pop($path); } } } var_dump(combine($arr, 3));
- 2 回答
- 0 关注
- 700 浏览
添加回答
举报
0/150
提交
取消