有没有一种巧妙的方法可以根据另一个数组的长度将数组拆分成块?
$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));
答案 0 :(得分:6)
使用array_splice
:
$target = array(); // or use [] in PHP 5.4
foreach($length as $i) {
$target[] = array_splice($start, 0, $i);
}
请注意,这会改变$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