PHP输出多个元素的排列或组合的方法
author:一佰互联 2019-04-26   click:155

实例如下:

<?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种排列结果。

以上这篇PHP输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网页设计。