2012-04-21 11 views
0

インデックスがインデックスかどうかに応じて配列をグループ化しようとするとそこで割り切れます。私はforループとforeachループとif($ i%3 == 0)のさまざまな組み合わせを試しました...しかし、それが必要な方法を出力していません。PHP - キー値によるグループ配列

$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; 

私はグループにしようとしている:ここで

が大幅に簡略化配列(元のデータは機密性の高い情報がたくさん含まれています...)

元の配列はこれに似ています

$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

これはそれを行う必要があります。

$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$iをとる($newitemのダンプ)

トリックは(int) $i/3あるが、3で除算、次にintにキャストする任意の小数点以下の桁数です。

0

投書使用array_chunkhttp://www.php.net/manual/en/function.array-chunk.php

:このようなすべてのレコードを3、
$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); 
+0

フォーマットが「間違っていません」、たとえば'$ newitem [0]'は連想配列である必要があります。だから 'array_chunk'は近づくが、彼が望むように書式化していない(つまり、2次元配列' $ newitem [0] [0] '、' $ newitem [0] [1 ]、 '$ newitem [0] [2]'、 '$ newitem [1] [0]'、...) –

+0

Ok ..代わりに私の答えを更新しました – Baba