php 使用递归将二维数组将每个数组元素分别与其他数组组合

示例:

复制代码
public function test(){

        $data = [
            [1,2,3],
            [4,5],
            [6,7]
        ];

        $list = [];
        foreach ($data[0] as $k => $v){
            foreach ($data[1] as $kk => $vv){
                foreach ($data[2] as $kkk => $vvv){
                    $list[] = [$v,$vv,$vvv];
                }
            }
        }

        echo "<pre>";
        print_r($list);

    }
复制代码

 

用递归方式将示例改造,这样就可以无限制数组长度了

复制代码
public  $list = [];
    public function test(){

        $data = [
            [1,2,3],
            [4,5],
            [6,7]
        ];

        echo "<pre>";
        $this->arrayRecurse($data,0,[]);
        print_r($this->list);exit;

    }


    private function arrayRecurse($data,$ii,$tmp){
        for ($i = 0;$i < count($data[$ii]);$i ++){
            $j = $ii + 1;
            $tmp[$ii] = $i;

            if($j < count($data)){
                $this->arrayRecurse($data,$j,$tmp);
            }

            if($j == count($data)){
                $t = [];

                for ($x = 0;$x < count($data);$x ++) {
                    $t[] = $data[$x][$tmp[$x]];
                }

                if(!empty($t)){
                    $this->list[] = $t;
                }

            }

        }
    }
复制代码

 

posted @   zwb_121  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示