PHP:根据另一个数组的值将数组拆分为不同大小的块

时间:2012-12-11 22:08:37

标签: php arrays split

有没有一种巧妙的方法可以根据另一个数组的长度将数组拆分成块?

$start = range(0,30);
$length = array(3,7,2,12,6);

$target = array([0]=>array(0,1,2),
                [1]=>array(4,5,6,7,8,9,10),
                [2]=>array(11,12),
                [3]=>array(13,14,15,16,17,18,19,20,21,22,23,24),
                [4]=>array(25,26,27,28,29,30));

3 个答案:

答案 0 :(得分:6)

使用array_splice

$target = array(); // or use []  in PHP 5.4
foreach($length as $i) {
    $target[] = array_splice($start, 0, $i);
}

Try it.

请注意,这会改变$start

答案 1 :(得分:2)

通过以下方式很容易实现:

代码:

$target = array();
$offset = 0;

foreach ($length as $lengthValue) {
    $target[] = array_slice($start, $offset, $lengthValue);
    $offset += $lengthValue;
}
var_dump($target);

说明:

您在这里所做的是使用array_slice()方法(非常类似于substr)来提取数组的一部分,然后将其插入目标数组中。每次增加偏移量允许函数记住下一次使用哪一个。

答案 2 :(得分:-1)

我认为array_chunk()函数可以这样做。以下是有关它的更多信息http://php.net/manual/en/function.array-chunk.php