我有一个这样的数组:
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)那么这也无关紧要。无论哪种方式都没问题。
答案 0 :(得分:2)
像......
$i=0;
foreach($array as $k=>$v) {
${"array".$i%3+1}[$k]=$v;
$i++;
}
答案 1 :(得分:2)
foreach($arr as $key => $value) {
$final_arr[$key % 3][] = $value;
}
答案 2 :(得分:1)
for($i = 0; $i < count($input); $i += 3) {
${"array".$i} = array_slice($input, 0 + $i, 3);
}
这将在每个第三个元素上将数组拆分为新数组。您还可以用变量替换3以拆分其他数字。
编辑:哦,我刚注意到,您可能想要抵消$ i以正确的顺序获取数组名称。现在它将是array3,array6,array9等
答案 3 :(得分: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;
}