今天帮同事搞一个问题,在一个含有N个元素的数组中取出M个元素组成新的数组,一共可以组合成的数组并输出。
<?php
$arr = array('a', 'b', 'c', 'd');
$t = getCombinationToString($arr, 3);
print_r($t);
function getCombinationToString($arr,$m)
{
$result = array();
if ($m ==1)
{
return $arr;
}
if ($m == count($arr))
{
$result[] = implode(',' , $arr);
return $result;
}
$temp_firstelement = $arr[0];
unset($arr[0]);
$arr = array_values($arr);
$temp_list1 = getCombinationToString($arr, ($m-1));
foreach ($temp_list1 as $s)
{
$s = $temp_firstelement.','.$s;
$result[] = $s;
}
unset($temp_list1);
$temp_list2 = getCombinationToString($arr, $m);
foreach ($temp_list2 as $s)
{
$result[] = $s;
}
unset($temp_list2);
return $result;
}
?>