实在不好意思,应该是我描述的问题,版主没看清 哈哈 我也迷迷糊糊的结贴了。
http://bbs.csdn.net/topics/390595473?page=1#post-395606907$arr = array('中','秋','节','快','乐')实际我想要的效果,版主的程序已经差不多出来了,但是还差了一点就是版主的程序出来的都是【中】开头的,我想要的效果是前面的字也可以减少:
比如有这种的排序(里面红色字体的)
中秋节快乐
中秋节快
中秋节乐
中秋节

秋节快
秋节
节乐

中秋

最后最好也是成为一个数组~
我刚才想用前面帖子版主给的程序改下,但是俺不是专业程序员,刚开始学习,是在改不明白,再次还得麻烦大家帮忙,谢谢了

解决方案 »

  1.   

    $arr = array('中','秋','节','快','乐');
    $res = array();for($j=0; $j<count($arr)-1; $j++) {
      for($i=0; $i<=count($arr); $i++) {
        $a = join('', array_slice($arr, $j, -$i));
        if($i) {
          foreach(array_slice($arr, -$i) as $v) $res[] = $a.$v;
        }elseif($a) $res[] = $a;
      }
    }
    $res = array_unique($res);
    $t = array_map('strlen', $res);
    array_multisort($t, SORT_DESC, $res);
    print_r($res);Array
    (
        [0] => 中秋节快乐
        [1] => 秋节快乐
        [2] => 中秋节快
        [3] => 中秋节乐
        [4] => 节快乐
        [5] => 秋节快
        [6] => 秋节乐
        [7] => 中秋节
        [8] => 中秋快
        [9] => 中秋乐
        [10] => 节快
        [11] => 节乐
        [12] => 快乐
        [13] => 秋节
        [14] => 秋快
        [15] => 秋乐
        [16] => 中节
        [17] => 中快
        [18] => 中乐
        [19] => 中秋
        [20] => 节
        [21] => 快
        [22] => 乐
        [23] => 秋
        [24] => 中
    )
      

  2.   

    $arr = array('中','秋','节','快','乐')实现:
    中秋节快乐
    中秋节快
    中秋节乐
    中秋节
    中秋快
    中秋乐
    中秋
    中节
    中快
    中乐





    秋节快乐
    秋节快
    秋节乐
    秋节
    秋快
    秋乐
    节快乐
    节快
    节乐快乐

    出来的效果最好是按字数多少排序 ,由多 到 少