zoukankan      html  css  js  c++  java
  • 【PHP】二维数组数组实现笛卡尔积,即排列组合

    PHP二维数组数组实现笛卡尔积,即排列组合:

    https://www.jb51.net/article/144708.htm

        //计算sku的笛卡儿积
        public static function CartesianProduct($category,$type='/') {//$category,二维数组 [['绿色'=>12,'红色'=>13,'蓝色'=>14],['男'=>101,'女'=>89],['L'=>2011,'M'=>299]]
            $arr1 = [];
            $result = array_shift($category);
            while ($arr2 = array_shift($category)) {
                $arr1 = $result;
                $result = [];
                foreach ($arr1 as $k1=>$v1) {
                    foreach ($arr2 as $k2=>$v2) {
                        $result[$k1.'#'.$k2] = $v1.$type.$v2;
                    }
                }
            }
    
            return $result;
        }

    function cartesian($arr,$str = array()){
      //去除第一个元素
      $first = array_shift($arr);
      //判断是否是第一次进行拼接
      if(count($str) > 1) {
        foreach ($str as $k => $val) {
          foreach ($first as $key => $value) {
            //最终实现的格式 1,3,76
            //可根据具体需求进行变更
            $str2[] = $val.','.$value;
          }
        }
      }else{
        foreach ($first as $key => $value) {
          //最终实现的格式 1,3,76
          //可根据具体需求进行变更
          $str2[] = $value;
        }
      }
      //递归进行拼接
      if(count($arr) > 0){
        $str2 = cartesian($arr,$str2);
      }
      //返回最终笛卡尔积
      return $str2;
    }
  • 相关阅读:
    C++日记 OPENGL错误及解决方案
    C++日记 VS编译问题
    OpenGL 自制API 4
    C++日记 宏定义函数
    OpenGL 自制API gluPerspective
    OpenGL 自制API 3
    OpenGL 自制API 2
    OpenGL 自制API 1
    OPENGL入门教程
    c++基础的记录(随笔记录一些基础的东西)
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/14097324.html
Copyright © 2011-2022 走看看