首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP的排列组合有关问题

2013-07-11 
PHP的排列组合问题现有数组$arr array(Area,Income,Age,Gender)想根据以上数组里的元素,组成新

PHP的排列组合问题
现有数组$arr = array('Area','Income','Age','Gender');
想根据以上数组里的元素,组成新的数组如下:
AreaGenderIncomeAge
AreaGenderAgeIncome
AreaIncomeGenderAge
AreaIncomeAgeGender
AreaAgeGenderIncome
AreaAgeIncomeGender
GenderIncomeAgeArea
GenderIncomeAreaAge
GenderAgeAreaIncome
GenderAgeIncomeArea
GenderAreaAgeIncome
GenderAreaIncomeAge
IncomeAgeGenderArea
IncomeAgeAreaGender
IncomeAreaGenderAge
IncomeAreaAgeGender
IncomeGenderAreaAge
IncomeGenderAgeArea
AgeIncomeAreaGender
AgeIncomeGenderArea
AgeAreaGenderIncome
AgeAreaIncomeGender
AgeGenderAreaIncome
AgeGenderIncomeArea
希望各位大神能提供好的算法
[解决办法]

$arr = array('Area','Income','Age','Gender');
print_r(Arrangement($arr));

//排列 Arrangement
function Arrangement($arr = array(), $res = '') {
  if(! is_array($arr) ) $arr = str_split($arr);
  if(empty($arr)) $array[] = $res;
  else foreach($arr AS $k => $v) {
    unset($arr[$k]);
    foreach( Arrangement($arr, $res . " $v") AS $t) $array[] = $t;
    $arr[$k]    = $v;
  }
  return  $array;
}

Array
(
    [0] =>  Area Income Age Gender
    [1] =>  Area Income Gender Age
    [2] =>  Area Age Gender Income
    [3] =>  Area Age Income Gender
    [4] =>  Area Gender Income Age
    [5] =>  Area Gender Age Income
    [6] =>  Income Age Gender Area
    [7] =>  Income Age Area Gender
    [8] =>  Income Gender Area Age


    [9] =>  Income Gender Age Area
    [10] =>  Income Area Age Gender
    [11] =>  Income Area Gender Age
    [12] =>  Age Gender Area Income
    [13] =>  Age Gender Income Area
    [14] =>  Age Area Income Gender
    [15] =>  Age Area Gender Income
    [16] =>  Age Income Gender Area
    [17] =>  Age Income Area Gender
    [18] =>  Gender Area Income Age
    [19] =>  Gender Area Age Income
    [20] =>  Gender Income Age Area
    [21] =>  Gender Income Area Age
    [22] =>  Gender Age Area Income
    [23] =>  Gender Age Income Area
)

热点排行