Home > Backend Development > PHP Tutorial > 还是关于【关于php数组排序的问题?】

还是关于【关于php数组排序的问题?】

WBOY
Release: 2016-06-23 14:22:10
Original
803 people have browsed it

实在不好意思,应该是我描述的问题,版主没看清 哈哈 我也迷迷糊糊的结贴了。
http://bbs.csdn.net/topics/390595473?page=1#post-395606907

$arr = array('中','秋','节','快','乐')
Copy after login
Copy after login


实际我想要的效果,版主的程序已经差不多出来了,但是还差了一点就是版主的程序出来的都是【中】开头的,我想要的效果是前面的字也可以减少:
比如有这种的排序(里面红色字体的)
中秋节快乐
中秋节快
中秋节乐
中秋节
秋节快
秋节
节乐
中秋



最后最好也是成为一个数组~


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


回复讨论(解决方案)

依据什么减少?
节快乐 又为何不在其中?

按我的代码,执行完一遍后,去掉数组的第一个元素再去执行
不就都是“秋”打头的了吗

依据什么减少?
节快乐 又为何不在其中?

按我的代码,执行完一遍后,去掉数组的第一个元素再去执行
不就都是“秋”打头的了吗

不好意思 我还没描述清楚

减少的依据就是前后依次减少,其实就是把除了顺序所有的都排一遍。
应该有【节快乐】 我上面列的列子没写全,不好意思啊 。造成误解了。

$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);
Copy after login
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] => 中
)

$arr = array('中','秋','节','快','乐')
Copy after login
Copy after login


实现:
中秋节快乐
中秋节快
中秋节乐
中秋节
中秋快
中秋乐
中秋
中节
中快
中乐







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


节快乐
节快
节乐

快乐


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

按照版主的方法成功了 多谢哈 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template