• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP排序疑问

php 搞代码 3年前 (2022-01-23) 13次浏览 已收录 0个评论
文章目录[隐藏]

本帖最后由 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:            <i>本文@来#源gaodai$ma#com搞$$代**码网</i><strong>搞代gaodaima码</strong>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);?><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>demo</title><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>

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

回复讨论(解决方案)

先按是否过期进行排序,再按时间进行排序,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() 		   <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>

两次循环 循环中判断是否过期 已过期的下边显示 其他的上边显示


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP排序疑问

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址