PHP一维数组随机取1个,2个,3个,4个元素的组合不重复的所有情况(组合次选)

  • A+
所属分类: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;
}
 
 
 
 
?>

结果

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => a
            [1] => c
        )

    [2] => Array
        (
            [0] => a
            [1] => d
        )

    [3] => Array
        (
            [0] => b
            [1] => c
        )

    [4] => Array
        (
            [0] => b
            [1] => d
        )

    [5] => Array
        (
            [0] => c
            [1] => d
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => a
            [1] => b
            [2] => d
        )

    [2] => Array
        (
            [0] => a
            [1] => c
            [2] => d
        )

    [3] => Array
        (
            [0] => b
            [1] => c
            [2] => d
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
        )

)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: