php 数组的处理,感觉很难

现在有这样一个数组:

$a = [1,2,3,4,5];

我想通过某种算法得到一下的结果:

1,2
1,3
1,4
1,5
2,3
2,4
2,5
3,4
3,5
4,5

也就是两两一组,另外还有可能三个一组
这样怎么算呢?
有大神知道吗?

阅读 2.2k
3 个回答

支持任意数量组合,其中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));

?>
$a = [1,2,3,4,5];

foreach($a as $key => $value)
{
    for($i = $key + 1; $i < count($a); $i++)
    {
        echo $value.",".$a[$i]."\n";
    }
}

三个一组的话就判断在什么情况下 key + 2

这波操作厉害了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题