最近有用到一个组合功能,特地研究了一下,写出了如下函数
/**
* 获取一个数组的组合.
* @param type $array
* @param type $num
* @return type
*/
function mathZuhe($array,$num) {
/**
* 用于组合用的方法
* @param type $array
* @param type $num
* @param type $out
* @param type $end
* @return type
*/
function mathZuhe_private($array, $num, $out = array(),&$end=array()) {
// print_r($jg);
// var_dump($array);
if (!is_array($array) || !$array) {
return;
}
$totalnum = count($array);
if ($totalnum < $num || $num == 0) {
return;
}
if ($num == 1) {
foreach ($array as $value) {
//这里是最终的结果展示
$end[] = array_merge($out, array($value));
}
return;
} else {
foreach ($array as $value) {
array_shift($array);
if (count($array) >= $num - 1) {
$merge = array_merge($out, array($value));
mathZuhe_private($array, $num - 1, $merge,$end);
}
}
return;
}
}
mathZuhe_private($array,$num,array(),$jg);
return $jg;
}
使用方法:
$array = array('a','b','c','d','e','f');
$out = mathZuhe($array,3);