问答

求商品规则笛卡尔积算法

作者:admin 2021-08-20 我要评论

题目描述 $arr = [ [ "title"="颜色", "value"=["黑色", "白色"] ], [ "title"="尺码", "value"=["S", "M","L"] ], [ "title"="长度", "value"=["9分裤", "长裤"...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

题目描述


$arr = [
    [
        "title"=>"颜色",
        "value"=>["黑色", "白色"]
    ],
    [
        "title"=>"尺码",
        "value"=>["S", "M","L"]
    ],
    [
        "title"=>"长度",
        "value"=>["9分裤", "长裤"]
    ]
];

如何才能让title标题加入分类中,每行一个规则

你期待的结果是什么?实际看到的错误信息又是什么?

我期待的结果是

array(12) {
  [0]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "S"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [1]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "S"
      ["长度"]=>
      string(6) "长裤"
    }
  }
  [2]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "M"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [3]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "M"
      ["长度"]=>
      string(6) "长裤"
    }
  }
  [4]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "L"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [5]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "黑色"
      ["尺码"]=>
      string(1) "L"
      ["长度"]=>
      string(6) "长裤"
    }
  }
  [6]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "S"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [7]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "S"
      ["长度"]=>
      string(6) "长裤"
    }
  }
  [8]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "M"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [9]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "M"
      ["长度"]=>
      string(6) "长裤"
    }
  }
  [10]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "L"
      ["长度"]=>
      string(7) "9分裤"
    }
  }
  [11]=>
  array(1) {
    ["value"]=>
    array(3) {
      ["颜色"]=>
      string(6) "白色"
      ["尺码"]=>
      string(1) "L"
      ["长度"]=>
      string(6) "长裤"
    }
  }
}
###
function func($sets)
{
    if (!$sets) return [];
    $first = array_shift($sets);
    $count = count($sets);
    for ($i = 0; $i < $count; $i++) {
        $tmp = [];
        if($i){
            foreach ($first as $f) {
                foreach ($sets[$i]['value'] as $set) {
                    $f[$sets[$i]['title']] = $set;
                    $tmp[] = $f;
                }
            }
        }else{
            foreach ($first['value'] as $f) {
                foreach ($sets[$i]['value'] as $set) {
                    $tmp[] = [
                        $first['title'] => $f,
                        $sets[$i]['title']=> $set
                    ];
                }
            }
        }
        $first = $tmp;
    }
    return $first;
}

$arr1 = [
    [
        "title"=>"颜色",
        "value"=>["黑色", "白色"]
    ],
    [
        "title"=>"尺码",
        "value"=>["S", "M","L"]
    ],
    [
        "title"=>"长度",
        "value"=>["9分裤", "长裤"]
    ],
    [
        "title"=>"性别",
        "value"=>["男", "女"]
    ]
];
$c = func($arr1);
print_r($c);
Array
(
    [0] => Array
        (
            [颜色] => 黑色
            [尺码] => S
            [长度] => 9分裤
            [性别] => 男
        )

    [1] => Array
        (
            [颜色] => 黑色
            [尺码] => S
            [长度] => 9分裤
            [性别] => 女
        )

    [2] => Array
        (
            [颜色] => 黑色
            [尺码] => S
            [长度] => 长裤
            [性别] => 男
        )

    [3] => Array
        (
            [颜色] => 黑色
            [尺码] => S
            [长度] => 长裤
            [性别] => 女
        )

    [4] => Array
        (
            [颜色] => 黑色
            [尺码] => M
            [长度] => 9分裤
            [性别] => 男
        )

    [5] => Array
        (
            [颜色] => 黑色
            [尺码] => M
            [长度] => 9分裤
            [性别] => 女
        )

    [6] => Array
        (
            [颜色] => 黑色
            [尺码] => M
            [长度] => 长裤
            [性别] => 男
        )

.......

###

没看明白,我写过一个筛选的前端效果:https://bestime.github.io/too...

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器