• 締切済み

配列操作

SQLで取得した配列データを新たな配列に作り直したいのですがやり方がわかりません。おしえてください。 取得される配列例です。 $Array[i][日付][タイプ][個数][タイプ別レコード数] ↓ $Array[0][0901][1][3][2] $Array[1][0901][2][4][2] $Array[2][0901][3][5][2] $Array[3][0902][1][5][2] $Array[4][0902][2][10][2] $Array[5][0902][3][7][2] この配列を日付が同じものだけ1レコードに作りなおしたいのですがどのようにすればいいでしょうか。 期待する配列例 $Table[i][日付][タイプ1個数][タイプ2個数][タイプ3個数][レコード数] ↓ $Table[0][0901][3][4][5][6] $Table[1][0902][5][10][7][6] よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

かなり適当にかいたのでわかりにくかったら申し訳ないですが、 こんな感じでしょうか? もともとのデータの持ち方もあまり美しいとは言えない みたいですのでなんとも言えませんが・・・ PHPの中で配列を配列に変換するのではなくsql側で 出力される際に整形してだすと言う方が効率的かもしれません。 <?PHP $Array[0]["0901"][1][3][2]=Array(); $Array[1]["0901"][2][4][2]=Array(); $Array[2]["0901"][3][5][2]=Array(); $Array[3]["0902"][1][5][2]=Array(); $Array[4]["0902"][2][10][2]=Array(); $Array[5]["0902"][3][7][2]=Array(); $count=0; foreach($Array as $k1=>$v1){ foreach($v1 as $k2=>$v2){ $count=($count==3)?1:$count+1; $a1[$count]=key($v2[$count]); $sum+=key($v2[$count][$a1[$count]]); if($count==3){ $Table[][$k2][$a1[1]][$a1[2]][$a1[3]][$sum]=Array(); $sum=0; } } } print "<pre>"; print_r($Table); print "</pre>"; ?>

関連するQ&A