0

私はこのような配列を持っています:

array(
    '1' => 'Item 1',
    '2' => 'Item 2',
    '3' => 'Item 3',
    '4' => 'Item 4',
    '5' => 'Item 5',
    '6' => 'Item 6',
    '7' => 'Item 7',
    '8' => 'Item 8',
    '9' => 'Item 9'
);

これを 3 つの配列に分割し、キー 1、2、3 がそれぞれ $array1、$array2、$array3 に入り、次にキー 4、5、6、7、8、9 が $array1、$array2、$ に入ります。それぞれarray3も。

したがって、最終的な出力は次のようになります。

$array1 = array(
    '1' => 'Item 1',
    '2' => 'Item 4',
    '3' => 'Item 7'
);

$array2 = array(
    '1' => 'Item 2',
    '2' => 'Item 5',
    '3' => 'Item 8'
);

$array3 = array(
    '1' => 'Item 3',
    '2' => 'Item 6',
    '3' => 'Item 9'
);

または、それらのキーが保持されている場合 (私の例のように各配列に 1,2,3 ではない)、それも問題ではありません。どちらでも構いません。

4

4 に答える 4

2
foreach($arr as $key => $value) {
    $final_arr[$key % 3][] = $value;
}
于 2013-11-15T07:48:59.183 に答える
2

みたいな

$i=0;
foreach($array as $k=>$v) {
 ${"array".$i%3+1}[$k]=$v;
 $i++;
}
于 2013-11-15T07:44:53.240 に答える
1
for($i = 0; $i < count($input); $i += 3) {
    ${"array".$i} = array_slice($input, 0 + $i, 3);
}

これにより、配列が 3 番目の要素ごとに新しい配列に分割されます。3 を変数に置き換えて、他の数値で分割することもできます。

編集: ああ、気付いたのですが、配列名を正しい順序で取得するために $i をオフセットしたい場合があります。これで、array3、array6、array9 などになります。

于 2013-11-15T08:03:10.230 に答える