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

前端之家收集整理的这篇文章主要介绍了PHP输出多个元素的排列或组合的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实例如下:

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

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

猜你在找的PHP相关文章