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

作者:袖梨 2022-06-24

 

 代码如下复制代码

$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);

 

functiongetunique($t){

    $t2=array();

    //print_r($t);

    for($i=0;$i

        $count_list=array_count_values($t[$i]);

        $flag= 1;

        foreach($count_listas$ck=>$cv){

            if($cv>1){

                $flag= 0;

                break;

            }

        }

        if($flag){

            sort($t[$i]);

            $flag2= 1;

            if($t2){

                foreach($t2as$t2k=>$t2v){

                    if($t[$i]==$t2v){

                        $flag2= 0;

                        break;

                    }

                }

            }

            if($flag2){

                $t2[] =$t[$i];

            }

        }

    }

    return$t2;

}

 

functiongetCombinationToString($arr,$m) {

    if($m==1) {

     return$arr;

    }

    $result=array();

     

    $tmpArr=$arr;

    unset($tmpArr[0]);

    for($i=0;$i

        $s=$arr[$i];

        $ret= getCombinationToString(array_values($tmpArr), ($m-1),$result);

         

        foreach($retas$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;

}

 

?>

 

相关文章

精彩推荐