【问题标题】:Turn an array into an bidimensional array and remove the first 11 entries把一个数组变成一个二维数组,去掉前11个条目
【发布时间】:2011-11-05 15:40:01
【问题描述】:

我一直试图弄清楚这一点,直到我的大脑崩溃了。 我正在尝试对数组进行排序。

必须删除前 11 个条目,然后必须将接下来的 7 个条目放入一个新数组中,然后再将接下来的 7 个条目放入,依此类推。直到没有更多条目为止。

简短示例:

转这个:

Array (
     [0] => 0
     [1] => 1
     [2] => 2
     [3] => 3
     [4] => 4
     [5] => 5
     [6] => 6
     [7] => 7
     [8] => 8
     [9] => 9
     [10] => 10
     [11] => 11
     [12] => 12
     [13] => 13
     [14] => 14
     [15] => 15
     [16] => 16
     [17] => 17
     [18] => 18
)

进入这个:

Array (
     [0] => Array (
               [0] => 11
               [1] => 12
               [2] => 13
               [3] => 14
               [4] => 15
               [5] => 16
               [6] => 17
            )
)

【问题讨论】:

    标签: php


    【解决方案1】:

    这样的事情应该可以解决问题:

    $orig = array(...);
    
    $i = 11; // start at offset 11
    $remove = 7; // take off 7 at a time
    
    $new = array();
    while($i <= count($orig)) {
       $new[] = array_slice($orig, $i, $remove);
       $i += $remove;
    }
    

    $new 将拥有你的新多维数组

    【讨论】:

      【解决方案2】:

      既然可以for,为什么还要while

      $a = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); // your array
      
      $ret = array(); // new array
      
      for($i=11; $i < sizeof($a); $i+=7)
        $ret[] = array_slice($a, $i, 7);
      

      【讨论】:

        【解决方案3】:

        您可以使用array_slice 获取一部分并使用array_chunk 对剩余部分进行分块:

        // take out the first 11 elements
        $array = array_slice($array, 11);
        
        // create chunks with 7 entries each
        $array = array_chunk($array, 7);
        

        Demo

        【讨论】:

          猜你喜欢
          • 2021-10-29
          • 2018-12-16
          • 2017-10-12
          • 1970-01-01
          • 1970-01-01
          • 2018-06-10
          • 1970-01-01
          • 1970-01-01
          • 2021-06-04
          相关资源
          最近更新 更多