尝试根据数组的索引是否可以对数组进行分组。我已经尝试过for循环和foreach循环的各种组合,如果($ i%3 == 0)......但是,它并没有输出我需要的方式。
这是一个大大简化的数组(原始数据包含很多高度敏感的信息......)
原始数组看起来与此相似:
$item[0]['Section 1']['Item 2'] => 1334;
$item[1]['Section 2']['Item 3'] => 15454;
$item[2]['Section 3']['Item 4'] => 1452;
$item[3]['Section 4']['Item 5'] => 1341;
$item[4]['Section 5']['Item 6'] => 1788655;
$item[5]['Section 6']['Item 7'] => 13;
$item[6]['Section 7']['Item 8'] => 142;
$item[7]['Section 8']['Item 9'] => 15678;
$item[8]['Section 9']['Item 10'] => 15542;
$item[9]['Section 10']['Item 11'] => 16578;
$item[10]['Section 11']['Item 12'] => 18452;
$item[11]['Section 12']['Item 13'] => 16565;
我正在尝试对每3条记录进行分组,如下所示:
$newitem[0]['Section 1']['Item 2'] => 1334;
$newitem[0]['Section 2']['Item 3'] => 15454;
$newitem[0]['Section 3']['Item 4'] => 1452;
$newitem[1]['Section 4']['Item 5'] => 1341;
$newitem[1]['Section 5']['Item 6'] => 1788655;
$newitem[1]['Section 6']['Item 7'] => 13;
$newitem[2]['Section 7']['Item 8'] => 142;
$newitem[2]['Section 8']['Item 9'] => 15678;
$newitem[2]['Section 9']['Item 10'] => 15542;
$newitem[3]['Section 10']['Item 11'] => 16578;
$newitem[3]['Section 11']['Item 12'] => 18452;
$newitem[3]['Section 12']['Item 13'] => 16565;
答案 0 :(得分:0)
建议使用array_chunk
http://www.php.net/manual/en/function.array-chunk.php
$item = array_chunk($item, 3);
或
$newItem = array ();
$x = 0;
$t = 0;
foreach ( $item as $value ) {
if ($x < 3) {
$newItem [$t] [$x] = $value;
$x ++;
} else {
$t ++;
$x = 0;
$newItem [$t] = array ();
}
}
var_dump ( $newItem );
答案 1 :(得分:0)
array_chunk是您需要的。并且您应该为二维数组迭代新数组,因为您可以看到新数组对于3个元素具有相同的索引0。
尝试:
答案 2 :(得分:0)
这应该这样做:
$newindex = 0;
$newitem = array();
for($i = 0; $i < count($item); ++$i)
{
$newindex = (int) $i / 3;
if(!isset($newitem[ $newindex ]))
$newitem[ $newindex ] = array();
$newitem[ $newindex ] = array_merge($newitem[ $newindex ], $item[ $i ]);
}
Link to output(转储$newitem
)
诀窍是(int) $i / 3
,它需要$i
,将其除以3
,然后转换为int
,这会截断任何小数位。