在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;
}