1

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

输入:

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

期望的输出:

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

3 回答 3

6

使用array_splice

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

尝试一下。

请注意,这会改变$start

于 2012-12-11T22:12:24.393 回答
2

这很容易通过以下方式完成:

代码:

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

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

解释:

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

于 2012-12-11T22:15:51.277 回答
-2

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

于 2012-12-11T22:10:53.047 回答