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

5年以前  |  阅读数:993 次  |  编程语言: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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例