一个升序排列的数组,例如$a=array(1,2,3,5,6,7,10,11),要把$a里的连续数字分别提取出来,组成几个数组 并将每个数组作为元素赋予一个二维数组$b,该怎么做?
$b=array();$b[]=array();求代码。

解决方案 »

  1.   

    $a=array(1,2,3,5,6,7,10,11);
    $t = array();
    foreach($a as $v) {
      if(! $t || $t[count($t)-1]== $v-1) $t[] = $v;
      else {
       $b[] = $t;
       $t = array($v);
      }
    }
    if($t) $b[] = $t;
    print_r($b);Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )    [1] => Array
            (
                [0] => 5
                [1] => 6
                [2] => 7
            )    [2] => Array
            (
                [0] => 10
                [1] => 11
            ))
      

  2.   

    我也来个,虽然结贴了。
    <?php
    $a = array(1,2,3,5,6,7,10,11,15,19,20,21);
    $result = array();
    $j = 0;
    for($i=0;$i<count($a);){
       $b = array();
       $t = $a[$i];
       while(in_array($t,$a)){
        $b[] = $t;
        $i++;
        $t++;
       }
     $result[$j++]=$b;  
    }
    print_r($result);