现在有这样一种表:
产品规格 发货量 月份
S001 100 01
S001 200 01
S001 100 02
S002 300 01
S002 200 03
现在需要达到这样的要求,按照产品规格和月份进行汇总,如下:
产品规格 一月发货量 二月发货量 三月发货量 。十二月发货量
S001 300 100
S002 300 200
就是说得把列转换成行,利用php数组应该怎样实现这样的算法啊,,望大家帮帮忙啊!!谢了!!
产品规格 发货量 月份
S001 100 01
S001 200 01
S001 100 02
S002 300 01
S002 200 03
现在需要达到这样的要求,按照产品规格和月份进行汇总,如下:
产品规格 一月发货量 二月发货量 三月发货量 。十二月发货量
S001 300 100
S002 300 200
就是说得把列转换成行,利用php数组应该怎样实现这样的算法啊,,望大家帮帮忙啊!!谢了!!
如果这样写的话,只能达到这样的效果:
产品规格 发货量 月份
S001 300 01
S001 100 02
S002 300 01
s002 200 03
但我需要把月份转换成行显示!!!
产品规格 发货量 月份
S001 300 01
S001 100 02
S002 300 01
s002 200 03 读取结果并处理(设数据库为mysql)
while($r = mysql_fetch_assoc($rs)) {
$out[$r['产品规格']][$r['月份']] += $r['发货量'];
}输出
foreach($out as $k=>$v) {
echo $k.",";
for($i=1;$i<13;$i++) {
echo $v[sprintf("%02d",$i)] . ',';
}
echo '<br />';
}
$out[$r['产品规格']][$r['月份']] += $r['发货量']; 是什么意思??
不好意思,手误:)
建议楼主采用 SQL:SELECT 产品规格,SUM(数量) AS SUM,月份 FROM PRODUCT GROUP BY 月份, 规格 ORDER BY 规格[/code]
然后再采用5楼的PHP代码
这种做法,只是仅仅是判断一条记录:比如说S001在一月的发货量是300,在二月的发货量是100,用这个语句的结果集是
产品规格 一月发货量 二月发货量 三月发货量 。十二月发货量
S001 300
S001 100而我需要把他们合并到一行里面去
产品规格 一月发货量 二月发货量 三月发货量 。十二月发货量
S001 300 100 请帮帮忙!!
$a = array(
array('产品规格'=>'S001', '发货量' => 300, '月份' => '01'),
array('产品规格'=>'S001', '发货量' => 100, '月份' => '02'),
array('产品规格'=>'S002', '发货量' => 300, '月份' => '01'),
array('产品规格'=>'s002', '发货量' => 200, '月份' => '03'),
);foreach($a as $r)
$out[$r['产品规格']][$r['月份']] += $r['发货量']; print_r($out);foreach($out as $k=>$v) {
echo $k.",";
for($i=1;$i <13;$i++) {
echo $v[sprintf("%02d",$i)] . ',';
}
echo ' <br />';
} *************
Array
(
[S001] => Array
(
[01] => 300
[02] => 100
) [S002] => Array
(
[01] => 300
) [s002] => Array
(
[03] => 200
))
S001,300,100,,,,,,,,,,,
S002,300,,,,,,,,,,,,
s002,,,200,,,,,,,,,,
我在我机器产试了一下是按你那个输出的,
最后按五楼的输出就没事了.