php 数字区间的显示

项目中有旅行路线的最佳旅行时间,显示方式要将时间变成区间的显示方式,如:将 1,3,5,7,9,10,11 变成 1,3,5,7,9-11这种显示方式,实现方法如下:

$time = array(1,3,5,7,9,10,11);//注意时间是从小到大排好序的,如果不知道怎么排序请参考

function dealWithTime($time) { 
    $r = array();
    $r[] = array('min' => $time[0], 'max' => $time[0]);
    $c = 0;
    for($i = 1, $j = count($time); $i < $j ; $i++){
        $v = $time[$i];
        if($r[$c]['max'] == $v - 1){
            $r[$c]['max'] = $v;
        }else{
            $r[] = array('min' => $v, 'max' => $v);
            $c++;
        }
    }
    $str = '';
    foreach ($r as $k => $v){
        if($v['min'] == $v['max']){
            if($k == 0){
                $str .= $v['max'];
            }else{
                $str .= ',' . $v['max'];
            }
        }else{
            if($k == 0){
                 $str .= $v['min'] . '-' . $v['max'];
            }else{
                 $str .= ',' . $v['min'] . '-' . $v['max'];
            }
        }
    }
    return $str;
}

var_dump(dealWithTime($time)); //输出 string(12) "1,3,5,7,9-11"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值