php排列组合枚举数组

php排列组合枚举:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ConbineController extends Controller
{
    //组合
    public static $attNew = array();
    //源
    public static $att = array();
    //个数
    public static $attCount = 0;
    /**
     * 格式化行
     */
    public function formatRow()
    {
        //属性
        $att = array([0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]);#这里可以写任意的数组,或者一维

        if (is_array($att)) {
            foreach ($att as $x) {
                self::$att[] = $x;
            }
        }
        //属性个数
        self::$attCount = count(self::$att);
        $this->Combination();
        return self::$attNew;
    }

    /**
     * 组合
     */
    public function Combination()
    {
        $num = func_num_args();
        if ($num == 0) {
            call_user_func_array(array($this, __FUNCTION__), array($num));
        } else {
            $t = func_get_args();
            $num = $num - 1;
            $i = $t[$num];
            if (is_array(self::$att)) {
                foreach (self::$att[$i] as $r) {
                    if (self::$attCount > 0 && self::$attCount == ($i + 1)) {
                        $a = array();
                        for ($x = 0; $x < $num; $x++) {
                            $a[] = $t[$x];
                        }
                        $a[] = $r;
                        self::$attNew[] = $a;
                        //return $s;
                    } else {
                        $arr = array();
                        for ($x = 0; $x < $num; $x++) {
                            $arr[] = $t[$x];
                        }
                        $arr[] = $r;
                        $arr[] = $i + 1;
                        if ($num > 20) {
                            exit('break;');
                            break;
                        }
                        call_user_func_array(array($this, __FUNCTION__), $arr);
                    }
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHUIPING_YANG

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值