> 백엔드 개발 > PHP 튜토리얼 > PHP排序疑问

PHP排序疑问

WBOY
풀어 주다: 2016-06-23 14:17:42
원래의
930명이 탐색했습니다.

本帖最后由 u010801782 于 2013-07-30 23:32:15 编辑

<?phpfunction switchWeek($num){    switch ($num) {        case 1:            return '星期一';            break;        case 2:            return '星期二';            break;        case 3:            return '星期三';            break;        case 4:            return '星期四';            break;        case 5:            return '星期五';            break;        case 6:            return '星期六';            break;        case 7:            return '星期日';            break;         default:            return '';            break;    }}$con = mysql_connect("localhost","root","") or die('连接失败:'.mysql_error());mysql_select_db("testt");mysql_query('set names utf8');$sql = 'select * from news ';$result = mysql_query($sql);$array = array();while($row = mysql_fetch_array($result,MYSQL_ASSOC)){    $key = date('Y年m月d日',$row['sTime']).' '.switchWeek(date('N',$row['sTime']));    $array[$key][]=$row;}mysql_free_result($result);//var_dump($array);?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>demo</title></head><body><table border='3' style="width: 500px; text-align:center;"><?php foreach ($array as $key => $value) {array_multisort($sTime, SORT_ASC, $value);?>    <tr><td colspan='5'><?=$key?></td></tr>    <?php        foreach ($value as $k => $v)        {         $sTime[$key]  = $v['sTime'];			?>       <tr>       <td><?=date('H:i',$v['sTime'])?></td>       <td><?=$v['title']?></td>       <td>	   <?php        if(time() > $v['sTime'] && time() < $v['eTime'] ){ echo '<span style="color: green;">开放中</span>'; }        if(time() < $v['sTime']){echo '<span style="color: #999;">暂未开放</span>';}        if(time() > $v['eTime']){echo '<span style="color:red ;">已过期</span>';}        ?>        </td>        </tr>        <?php 	}	?><?php }?><tr><td colspan='5'>已过期</td></tr></table></body></html>
로그인 후 복사




最终效果如图,请问前端显示的时候如何按时间大小降序并且已经过期的行移动到已过期下面去。


回复讨论(解决方案)

先按是否过期进行排序,再按时间进行排序,order by 过期,time

如果仅仅是顺序排列,已过期的在下边未过期的在上边 各自按时间倒序排列

$sql = 'select * from news order by guoqi desc,time desc

如果需要将之分门别类 可以进行两次循环,未过期的列表位置循环一次,已过期的列表位置循环一次,直接在循环输出内容时判断过期与否的字段

如果仅仅是顺序排列,已过期的在下边未过期的在上边 各自按时间倒序排列

$sql = 'select * from news order by guoqi desc,time desc

如果需要将之分门别类 可以进行两次循环,未过期的列表位置循环一次,已过期的列表位置循环一次,直接在循环输出内容时判断过期与否的字段

需要分门别类的循环输出,请问如何实现?有实例吗?

<table border='3' style="width: 500px; text-align:center;"><?php foreach ($array as $key => $value) {array_multisort($sTime, SORT_ASC, $value);?>    <tr><td colspan='5'><?=$key?></td></tr>    <?php        foreach ($value as $k => $v)        { 		if(time() <= $v['eTime']){			$sTime[$key]  = $v['sTime'];    			?>		   <tr>		   <td><?=date('H:i',$v['sTime'])?></td>		   <td><?=$v['title']?></td>		   <td>		   <?php			if(time() > $v['sTime'] && time() < $v['eTime'] ){ echo '<span style="color: green;">开放中</span>'; }			if(time() < $v['sTime']){echo '<span style="color: #999;">暂未开放</span>';}			?>			</td>			</tr>        <?php 		}    }    ?><?php }?><tr><td colspan='5'>已过期</td></tr><?php foreach ($array as $key => $value) {array_multisort($sTime, SORT_ASC, $value);?>    <tr><td colspan='5'><?=$key?></td></tr>    <?php        foreach ($value as $k => $v)        { 		if(time() > $v['eTime']){			$sTime[$key]  = $v['sTime'];    			?>		   <tr>		   <td><?=date('H:i',$v['sTime'])?></td>		   <td><?=$v['title']?></td>		   <td>				已过期			</td>			</tr>        <?php 		}    }    ?><?php }?></table>
로그인 후 복사


两次循环  循环中判断是否过期  已过期的下边显示 其他的上边显示
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿