zoukankan      html  css  js  c++  java
  • PHP 求多个数组的笛卡尔积,适用于求商品规格组合【原创】

    $a = ['黑','白','红','绿'];
    $b = ['大','小'];
    $c = ['A','B','C','D'];
    $count_a = count($a);
    $count_b = count($b);
    $count_c = count($c);
    $total = $count_a * $count_b * $count_c; # 一共有多少种情况
    $arr = [];
    for($i = 0; $i < $total; $i++){
    $pos_c = $i % $count_c; # 得到 当前 $c 下标
    $res = floor($i / $count_c);
    $pos_b = $res % $count_b; # 得到 当前 $b 下标
    $res = floor($res / $count_b);
    $pos_a = $res % $count_a; #得到 当前 $a 下标
    # $arr[$i] = [$a[$pos_a],$b[$pos_b],$c[$pos_c]];
    echo $a[$pos_a] . ','. $b[$pos_b] . ',' . $c[$pos_c] . " ";
    }

    运行结果如下

    D:phpstudy_proExtensionsphpphp7.3.4ntsphp.exe D:Brush2020-01-071.php
    黑,大,A
    黑,大,B
    黑,大,C
    黑,大,D
    黑,小,A
    黑,小,B
    黑,小,C
    黑,小,D
    白,大,A
    白,大,B
    白,大,C
    白,大,D
    白,小,A
    白,小,B
    白,小,C
    白,小,D
    红,大,A
    红,大,B
    红,大,C
    红,大,D
    红,小,A
    红,小,B
    红,小,C
    红,小,D
    绿,大,A
    绿,大,B
    绿,大,C
    绿,大,D
    绿,小,A
    绿,小,B
    绿,小,C
    绿,小,D

    进程已结束,退出代码0

  • 相关阅读:
    实验0 了解和熟悉操作系统
    学习进度条
    0302软件构建与教学
    评论任务
    学习进度条
    sprint3个人总结
    软件工程学期总结
    6.3 学术诚信与职业道德
    阅读《构建之法》第8、9、10章
    nodejs学习心得
  • 原文地址:https://www.cnblogs.com/wangshuazi/p/14251344.html
Copyright © 2011-2022 走看看