码迷,mamicode.com
首页 > 编程语言 > 详细

PHP数组内容不重复组合排列算法

时间:2016-06-20 23:48:12      阅读:970      评论:0      收藏:0      [点我收藏+]

标签:

最近在做ecshop的商品库存模块,分别给一款商品的多个属性组合设置库存,如下图:

 技术分享

 一款手机有不同颜色,屏幕尺寸,系统和电量,都要设置不同的库存,如果都要手动选择属性组合,则会耗费很多不必要的时间。假如打开页面时就已经设置好属性排列组合那就最好不过,因此想了整天,写了如下函数:

 

 1 <?php
 2 
 3 /*
 4 Author:GaZeon
 5 Date:2016-6-20
 6 Function:getArrSet
 7 Param:$arrs 二维数组
 8 getArrSet(array(array(),...))
 9 数组内容不重复组合排列
10 */
11 function getArrSet($arrs,$_current_index=-1)
12 {
13     //总数组
14     static $_total_arr=array();
15     //总数组下标计数
16     static $_total_arr_index=0;
17     //输入的数组长度
18     static $_total_count;
19     //临时拼凑数组
20     static $_temp_arr=array();
21     
22     //进入输入数组的第一层,并初始化输入数组长度
23     if($_current_index<0)
24     {
25         $_total_count=count($arrs)-1;
26         getSet($arrs,0);
27     }
28     else
29     {
30         //循环第$_current_index层数组
31         foreach($arrs[$_current_index] as $v)
32         {
33             //如果当前的循环的数组少于输入数组长度
34             if($_current_index<$_total_count)
35             {
36                 //将当前数组循环出的值放入临时数组
37                 $_temp_arr[$_current_index]=$v;
38                 //继续循环下一个数组
39                 getSet($arrs,$_current_index+1);
40                 
41             }
42             //如果当前的循环的数组等于输入数组长度(这个数组就是最后的数组)
43             else if($_current_index==$_total_count)
44             {
45                 //将当前数组循环出的值放入临时数组
46                 $_temp_arr[$_current_index]=$v;
47                 //将临时数组加入总数组
48                 $_total_arr[$_total_arr_index]=$_temp_arr;
49                 //总数组下标计数+1
50                 $_total_arr_index++;
51             }
52 
53         }
54     }
55     
56     return $_total_arr;
57 }
58 
59 /*************TEST**************/
60 $arr=array(
61     array(‘a‘,‘b‘,‘c‘),
62     array(‘A‘,‘B‘,‘C‘),
63     array(‘1‘,‘2‘,‘3‘),
64     array(‘I‘,‘II‘,‘III‘)
65 );
66 
67 var_dump(getArrSet($arr));
68     

 

PHP数组内容不重复组合排列算法

标签:

原文地址:http://www.cnblogs.com/GaZeon/p/5602049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!