本篇文章主要介紹PHP實現輸出多個元素的排列或組合的方法,感興趣的朋友參考下,希望對大家有所協助。
執行個體如下:
<?php$arr = array('a','b','c','d');$result = array();$t = getCombinationToString($arr, 1);print_r($t);$t = getCombinationToString($arr, 2);$t2 = getunique($t);print_r($t2);$t = getCombinationToString($arr, 3);$t2 = getunique($t);print_r($t2);$t = getCombinationToString($arr, 4);$t2 = getunique($t);print_r($t2);function getunique($t){$t2 = array();//print_r($t);for($i=0;$i<count($t);$i++){$count_list = array_count_values($t[$i]);$flag = 1;foreach($count_list as $ck=>$cv){if($cv>1){$flag = 0;break;}}if($flag){sort($t[$i]);$flag2 = 1;if($t2){foreach($t2 as $t2k=>$t2v){if($t[$i]==$t2v){$flag2 = 0;break;}}}if($flag2){$t2[] = $t[$i];}}}return $t2;}function getCombinationToString($arr, $m) {if ($m ==1) { return $arr;}$result = array();$tmpArr = $arr;unset($tmpArr[0]);for($i=0;$i<count($arr);$i++) {$s = $arr[$i];$ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);foreach($ret as $row) {//$result[] = $s . $row;$temp = array();$temp[] = $s;if(is_array($row)){$temp = array_merge($temp,$row);}else{$temp[] = $row;}sort($temp);$result[] = $temp;}} return $result;}?>
共15種排列結果。
以上就是本文的全部內容,希望對大家的學習有所協助。