最近有用到一个组合功能,特地研究了一下,写出了如下函数
/** * 获取一个数组的组合. * @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);
留下你的看法: