将数组转换为二维数组并删除前11个条目

时间:2011-11-05 15:40:01

标签: php

我一直试图解决这个问题直到我的大脑崩溃。 我试图对数组进行排序。

必须删除前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
            )
)

3 个答案:

答案 0 :(得分:3)

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

$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会有你的新多维数组

答案 1 :(得分:1)

为什么while可以for

$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);

答案 2 :(得分:0)

您可以使用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