字符串
$string = 'a,b,c,d,e';
想进行排序,比如排序后变为 $string = 'b,a,c,d,e'; $string = 'b,a,d,c,e';等等,类似排列组合,但不需要任意两个重复字母

解决方案 »

  1.   

    $str    = 'ABCDE';
    $res    = arrange(str_split($str));
    print_r($res);
    function arrange($arr = array(), $res = '')
    {
        if(empty($arr))
        {
            $array[]    = $res;
        }
        else
        {
            foreach($arr AS $k => $v)
            {
                unset($arr[$k]);
                foreach(arrange($arr, $res . $v) AS $t)
                {
                    $array[]    = $t;
                }
                $arr[$k]    = $v;
            }
        }
        return    $array;
    }Array
    (
        [0] => ABCDE
        [1] => ABCED
        [2] => ABDEC
        [3] => ABDCE
        [4] => ABECD
        [5] => ABEDC
        [6] => ACDEB
        [7] => ACDBE
        [8] => ACEBD
        [9] => ACEDB
        [10] => ACBDE
        [11] => ACBED
        [12] => ADEBC
        [13] => ADECB
        [14] => ADBCE
        [15] => ADBEC
        [16] => ADCEB
        [17] => ADCBE
        [18] => AEBCD
        [19] => AEBDC
        [20] => AECDB
        [21] => AECBD
        [22] => AEDBC
        [23] => AEDCB
        [24] => BCDEA
        [25] => BCDAE
        [26] => BCEAD
        [27] => BCEDA
        [28] => BCADE
        [29] => BCAED
        [30] => BDEAC
        [31] => BDECA
        [32] => BDACE
        [33] => BDAEC
        [34] => BDCEA
        [35] => BDCAE
        [36] => BEACD
        [37] => BEADC
        [38] => BECDA
        [39] => BECAD
        [40] => BEDAC
        [41] => BEDCA
        [42] => BACDE
        [43] => BACED
        [44] => BADEC
        [45] => BADCE
        [46] => BAECD
        [47] => BAEDC
        [48] => CDEAB
        [49] => CDEBA
        [50] => CDABE
        [51] => CDAEB
        [52] => CDBEA
        [53] => CDBAE
        [54] => CEABD
        [55] => CEADB
        [56] => CEBDA
        [57] => CEBAD
        [58] => CEDAB
        [59] => CEDBA
        [60] => CABDE
        [61] => CABED
        [62] => CADEB
        [63] => CADBE
        [64] => CAEBD
        [65] => CAEDB
        [66] => CBDEA
        [67] => CBDAE
        [68] => CBEAD
        [69] => CBEDA
        [70] => CBADE
        [71] => CBAED
        [72] => DEABC
        [73] => DEACB
        [74] => DEBCA
        [75] => DEBAC
        [76] => DECAB
        [77] => DECBA
        [78] => DABCE
        [79] => DABEC
        [80] => DACEB
        [81] => DACBE
        [82] => DAEBC
        [83] => DAECB
        [84] => DBCEA
        [85] => DBCAE
        [86] => DBEAC
        [87] => DBECA
        [88] => DBACE
        [89] => DBAEC
        [90] => DCEAB
        [91] => DCEBA
        [92] => DCABE
        [93] => DCAEB
        [94] => DCBEA
        [95] => DCBAE
        [96] => EABCD
        [97] => EABDC
        [98] => EACDB
        [99] => EACBD
        [100] => EADBC
        [101] => EADCB
        [102] => EBCDA
        [103] => EBCAD
        [104] => EBDAC
        [105] => EBDCA
        [106] => EBACD
        [107] => EBADC
        [108] => ECDAB
        [109] => ECDBA
        [110] => ECABD
        [111] => ECADB
        [112] => ECBDA
        [113] => ECBAD
        [114] => EDABC
        [115] => EDACB
        [116] => EDBCA
        [117] => EDBAC
        [118] => EDCAB
        [119] => EDCBA
    )