PHP中排列组合的算法实现

【注】原文出处:PHP中排列组合的算法实现 | 饭饭博客

最近在做数据迁移工作,在迁移过程中遇到了这样的一个问题:将两个数组中的元素一一组合一次。其实这个原理很简单,就是利用我们中学学的排列组合原理,可是我这脑袋瓜子笨,愣是转不过弯,也不愿去折腾,所以网上搜了一下。这类的例子网上少,都是五花八门的,所以今天把我亲测可用的放在这里,一是和大家一起分享一下,二是记录一下,下次免得找了。话不多说了,下面贴代码:


if(!empty($row['PropertyName'])){


        //属性处理 array("颜色"=>array("红色","绿色","蓝色"),"尺寸"=>array("M","L","XL"));


        $newArr=array();

        $key = 0;

        foreach($array as $val){

            $newArr[$key]=$val;

            $key++;

        }


        $h=count($newArr);

        $w=count($h[0]);

        $m=array();

        $m[$i=$h]=1;

        while ($i--){

            $m[$i] = $m[$i+1]*count($newArr[$i]);

        }

        $n=$m[0];

        $explode_Name = explode(",", $row['PropertyName']);

        for ($i = 0; $i < $n; $i++) {

                $item=array();

                for ($j = 0; $j < $h; $j++){


                    $variationList =  $newArr[$j][~~($i % $m[$j] / $m[$j + 1])];

                    $item[$explode_Name[$j]] = $variationList;

                }

        }

     }