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 に答える