美文网首页PHP
PHP实现排列组合,获取数据组合出现的可能情况

PHP实现排列组合,获取数据组合出现的可能情况

作者: 青山淼淼 | 来源:发表于2019-10-13 15:48 被阅读0次

有个需求是差不多数学组合。
如1 2 3,2个数字为一个组合,可以组合多少种不同的情况。
结果要求为

  • 1 2
  • 1 3
  • 2 3
    这三种情况
function combination($array, $length) {
    $result = [];
    //取出数据要求总长度不符合 则直接返回空数组
    $number = count($array);
    if ($length <= 0 || $length > $number) {
        return $result;
    }
    //循环开始
    foreach ($array as $key => $value) {
        $temp = [ $value ];
        if ($length == 1) { //如果长度为了 则直接返回所有数据单个值组成的数组
            $result[] = $temp;
        } else {
            //从当前值开始向后截取数组
            $less = array_slice($array, $key + 1);
            $small = combination($less, $length - 1);
            foreach ($small as $smallValue) {
                $result[] = array_merge($temp, $smallValue);
            }
        }
    }
    return $result;
}

$array = range(1,5);
combination($array,3);

打印结果

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 4
        )

    [2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 5
        )

    [3] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 4
        )

    [4] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 5
        )

    [5] => Array
        (
            [0] => 1
            [1] => 4
            [2] => 5
        )

    [6] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
        )

    [7] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 5
        )

    [8] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 5
        )

    [9] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 5
        )

)

相关文章

  • PHP实现排列组合,获取数据组合出现的可能情况

    有个需求是差不多数学组合。如1 2 3,2个数字为一个组合,可以组合多少种不同的情况。结果要求为 1 2 1 3 ...

  • 排列组合

    python 实现 排列组合

  • PHP实现排列组合算法

    一、组合算法 给定一非重复字符串所有的组合,形如 abc,则Q1:输出所有组合 a,b,c,ab,ac,bc,ab...

  • PHP 排列组合问题

    如$arr=[2,3,4]; 那么它的结果就应该是[2,23,234,24,3,34,4]七种结果 有什么好的方法得到吗

  • 排列组合的实现

    C语言中的排列和组合在实际的应用中使用广泛。排列算法*字典序法*递增进位制数法*递减进位制数法*邻位对换法*递归法...

  • 算法14 Permutations

    题目:给出不同的数字的集合,返回所有可能的排列组合。例如,[1,2,3] 有如下的排列组合: 思路:根据题意输入数...

  • MYSQL 5.数据库应用

    多表查询:笛卡尔积 A-B集合所有可能的组合情况 清除无用数据获取有用数据分类:内连接查询 外连接查询 子查询隐式...

  • 在Excel中用VBA实现排列组合关键词

    在做SEO或者关键词竞价广告时,需要核心关键词之间排列组合,来快速大量的获取长尾关键词。本文介绍用Excel来实现...

  • 2018-08-02

    php实现组合枚举算法 源码

  • 用Python进行排列组合

    如何用Python实现排列组合?Python原生自带的库itertools即可解决 排列 组合这里用到combin...

网友评论

    本文标题:PHP实现排列组合,获取数据组合出现的可能情况

    本文链接:https://www.haomeiwen.com/subject/gzzhmctx.html