php教程

超轻量级php框架startmvc

PHP输出多个元素的排列或组合的方法

更新时间:2020-03-18 08:12:05 作者:startmvc
实例如下:<?php$arr=array('a','b','c','d');$result=array();$t=getCombinationToString($arr,1);print_r($t);$t=

实例如下:


<?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输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

php 排列组合