suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - 简单字符串处理,求思路。

$arr = [2,3,4,5,8,10,11,12,13,16,19];

转换成字符串

2-5,8,10-13,16,19

个人的思路是把 8 16 19 这种两边都不靠的挑选出来,这种 2 3 4 5 再选择一个最大值最小值。

滿天的星座滿天的星座2808 Tage vor414

Antworte allen(3)Ich werde antworten

  • 怪我咯

    怪我咯2017-05-16 13:15:33

    记下起点值,往后扫,连续则继续往后,否则记下终点值,得到一个beg-end或者beg。continue...

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:15:33

    $arr=array(2,3,4,5,8,10,11,12,13,16,19);
    //最大值
    $max=max($arr);
    //求和
    $sun=array_sum($arr);
    //排序
    asort($arr);
    //a1为标准数组,用来判断值是否存在
    //a2用来存放已经被使用过的数
    //a3为最后的结果数组
    foreach ($arr as $key => $value) {
        
         $a1[$value]=$value;
    }
    
    foreach ($arr as $key => $value) {
         if(!isset($a2[$value])){
                 $start=$value;
                 $end=$value;
            
                 $a2[$value]=$value;
                 for($i=0;$i<$sun;$i++){
                
                                $end = $end+1;
                                if(isset($a1["$end"])){
                    
                                    $a2[$end]=$end;
                
                                }else{
                                    $end =$end-1;
                                    if($start==$end){
                                      $a3 []= $start;
                                    }else{
                                      $a3 []=   $start."-".$end;
                                    }
                                    
                                   //断开了,跳出循环
                                    break;
                                }
                
                
                   }
           }
    }
    
    echo '<pre>';
    var_dump($a3);
    
    die;
    

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:15:33

    将数组按每5个拆分,再对子数组进行处理。

    Antwort
    0
  • StornierenAntwort