在PHP中将一个数组分成3个不同的数组

在PHP中将一个数组分成3个不同的数组,php,Php,我有这样一个数组: 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个数组,其中键

我有这样一个数组:

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),那么这也不重要。两种方法都可以。

类似的东西

$i=0;
foreach($array as $k=>$v) {
 ${"array".$i%3+1}[$k]=$v;
 $i++;
}
类似

$i=0;
foreach($array as $k=>$v) {
 ${"array".$i%3+1}[$k]=$v;
 $i++;
}
($i=0;$i{ ${“array”。$i}=array_切片($input,0+$i,3); } 这将在每三个元素上将数组拆分为新数组。您还可以将3替换为一个变量,以便在其他数字上拆分

编辑:哦,我刚刚注意到,您可能需要偏移$I以获得正确顺序的数组名称。现在($i=0;$i 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; } ${“array”。$i}=array_切片($input,0+$i,3); } 这将在每三个元素上将数组拆分为新数组。您还可以将3替换为一个变量,以便在其他数字上拆分


编辑:哦,我刚刚注意到,您可能需要偏移$I以获得正确顺序的数组名称。现在它将是array3、array6、array9等,非常清晰易懂。只有一件事,每个数组项的键都是数字,从0开始,这可能是海报想要的。这实际上并没有回答OP的问题,他想要3个不同的数组,而不是一个数组,每个数组的键都不同。@webnoob是对的,这与我所问的完全不符。但是,我已经将其标记为正确答案,因为代码非常简单、清晰和直接,最终结果仍然实现了我设定的目标,即将数据分为3个列表,每个列表的第一项是原始数组中的前3个键,每个列表中的第二项是第二个3个键等。非常清晰易懂。只有一件事,每个数组项的键都是数字,从0开始,这可能是海报想要的。这实际上并没有回答OP的问题,他想要3个不同的数组,而不是一个数组,每个数组的键都不同。@webnoob是对的,这与我所问的完全不符。然而,我已经将其标记为正确答案,因为代码非常简单、清晰和直接,最终结果仍然实现了我设定的目标,即将数据分为3个列表,每个列表的第一项是原始数组中的前3个键,每个列表中的第二项是第二个3个键等等。
   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;
                }