使用php和階乘原理 通過階乘獲取一個一維陣列中全部的組合情況
阿新 • • 發佈:2019-02-07
<?php /** * 通過階乘獲取一個一維陣列中全部的組合情況 * @param array $arr 要被組合的一維陣列 * @return array */ function getArrAllCombineByFactor($arr){ if(count($arr) > 1){ //儲存所有組合情況的陣列 $combine_arr = array(); foreach ($arr as $k => $v) { $tmp_arr = arrRmoveValueByKey($arr,$k); $son_combine_arr = getArrAllCombineByFactor($tmp_arr); foreach($son_combine_arr as $son_combine_v){ $combine_arr[] = $v.$son_combine_v; } } return $combine_arr; }else{ return $arr; } } /** * 通過key刪除陣列中的值 * @param array $arr 要被刪除的陣列 * @param string|int $k 要刪除的key * @return array */ function arrRmoveValueByKey($arr,$k){ unset($arr[$k]); $arr = array_values($arr); return $arr; } $arr = [1,2,3,4]; var_dump(getArrAllCombineByFactor($arr));