有一组数:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16....n
要排成如下:
1
2,3
4,5,6,7
8,9,10,11,12,13,14,15
16
.
.
.
nphp如何实现?

解决方案 »

  1.   

    <?phpfor ($i=0;$i<10;$i++){
     for ($j=pow(2,$i);$j<=pow(2,$i+1)-1;$j++){
     echo $j.",";
    }
    echo "<br />";
    }
    ?>
      

  2.   


    $array=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
     function newArray($array){
      $count=count($array);
    $sqr=0;
    $newarray=array();
    for($i=1;$i<$count;$i++){
    $temarray=array();
      for($c=$sqr;$c<pow(2,$i)-1;$c++)
      {  if($c>=$count)
       break 2;
       echo $array[$c].' ';
      }
      $sqr=$c;
      echo '<br>';
    }
     } newArray($array);/*---

    2 3 
    4 5 6 7 
    8 9 10 11 12 13 14 15 
    16 17 18 
    */
      

  3.   

    $ar = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18);
    for($i=1; $i<count($ar); $i*=2)
      $o[] = array_slice($ar, $i-1, $i);
    print_r($o);Array
    (
        [0] => Array
            (
                [0] => 1
            )    [1] => Array
            (
                [0] => 2
                [1] => 3
            )    [2] => Array
            (
                [0] => 4
                [1] => 5
                [2] => 6
                [3] => 7
            )    [3] => Array
            (
                [0] => 8
                [1] => 9
                [2] => 10
                [3] => 11
                [4] => 12
                [5] => 13
                [6] => 14
                [7] => 15
            )    [4] => Array
            (
                [0] => 16
                [1] => 17
                [2] => 18
            ))
      

  4.   

    你这边是不是每行显示的数值为2的多少次幂!function getMyArray($number){
    $result = array();
    for( $i=1 ; $i <= $number; $i++ ){
    $result[]=$i;
    }
    $return = array();


    $end=0;
    $start=0;
    for( $j=0;$j < $number-1 ; $j++){
    $end=pow(2,$j);
    $end=$end>$number?$number:$end;
    echo $start."   ".$end."<br/>";
    $return[]=array_slice($result,$start,$end);
    $start+=$end;
    if( $start >= $number ){
    break;
    }
    }
    return $return;
    }
    print_r(getMyArray(80));
      

  5.   


    还是利用原生的函数数组分割函数array_slice比较好:
    array_slice
    (PHP 4, PHP 5)array_slice — 从数组中取出一段说明
    array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )
    array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。 如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。 如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。 注意 array_slice() 默认将重置数组的键。自 PHP 5.0.2 起,可以通过将 preserve_keys 设为 TRUE 来改变此行为。 
    Example #1 array_slice() 例子<?php
    $input = array("a", "b", "c", "d", "e");$output = array_slice($input, 2);      // returns "c", "d", and "e"
    $output = array_slice($input, -2, 1);  // returns "d"
    $output = array_slice($input, 0, 3);   // returns "a", "b", and "c"// note the differences in the array keys
    print_r(array_slice($input, 2, -1));
    print_r(array_slice($input, 2, -1, true));
    ?> 
    以上例程会输出:Array
    (
        [0] => c
        [1] => d
    )
    Array
    (
        [2] => c
        [3] => d
    )