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

某事喜欢

$i=0;
foreach($array as $k=>$v) {
 ${"array".$i%3+1}[$k]=$v;
 $i++;
}
于 2013-11-15T07:44:53.240 回答
2
foreach($arr as $key => $value) {
    $final_arr[$key % 3][] = $value;
}
于 2013-11-15T07:48:59.183 回答
1
for($i = 0; $i < count($input); $i += 3) {
    ${"array".$i} = array_slice($input, 0 + $i, 3);
}

这会将您的数组拆分为每隔三个元素的新数组。您还可以将 3 替换为变量以拆分其他数字。

编辑:哦,我刚刚注意到,您可能想要偏移 $i 以获取正确顺序的数组名称。现在它将是array3、array6、array9等

于 2013-11-15T08:03:10.230 回答
0
   Try This

          $first_arr = array();
                $second_arr = array();
                $third_arr = array();
                $first = 0;
                $second = 1;
                $third = 2;    
                foreach($array as $value)
                {
                    if ($first++ % 3 == 0)
                    $first_arr[] = $value;
                    if ($second++ % 3 == 0)
                    $second_arr[] = $value;
                    if ($third++ % 3 == 0)
                    $third_arr[] = $value;
                }
于 2013-11-15T09:19:03.620 回答