$sql = "SELECT `num`,`project`,`project_category`,`code`,`item_real`,`item_budget`,`item_current_predict`,`item1`,`item2`,`item3`,`item4`,
`item5`,`item6`,`tuisuan`,`tuisuan_status`,`current_status`,`comment`,`id`";
$sql .= "FROM `budgetcontrol` ".$str."WHERE `department` = 'pu' order by `num` asc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
// echo $row['item1'].' '.$row['item2'].' '.$row['item3'].'<br />'; if($row['porject'] == '物流费')
{
$arr = array($row);
$grp_sum = array();
  foreach($row as $value)
{
$grp_sum['物流费']['item1'] += $row['item1'];
$grp_sum['物流费']['item2'] += $row['item2'];
$grp_sum['物流费']['item3'] += $row['item3'];
}
print_r($grp_sum);
}
}
我想达到这样的效果;$arr = array(array(1, 0.1), array(1, 0.3), array(2, 10), array(2, 20));
$grp_sum = array();
foreach ($arr as $value)
{
    $grp_sum[$value[0]] += $value[1];
}
print_r($grp_sum).'<br />';
请问哪里出了问题?

解决方案 »

  1.   

            $grp_sum = array();
             foreach($row as $value)    
            {
                $grp_sum['物流费']['item1'] += $row['item1'];
                $grp_sum['物流费']['item2'] += $row['item2'];
                $grp_sum['物流费']['item3'] += $row['item3'];
            }
            print_r($grp_sum);
    改为
            $grp_sum = array();            $grp_sum['物流费']['item1'] += $row['item1'];
                $grp_sum['物流费']['item2'] += $row['item2'];
                $grp_sum['物流费']['item3'] += $row['item3'];        print_r($grp_sum);
      

  2.   


    $sql = "SELECT `num`,`project`,`project_category`,`code`,`item_real`,`item_budget`,`item_current_predict`,`item1`,`item2`,`item3`,`item4`,
    `item5`,`item6`,`tuisuan`,`tuisuan_status`,`current_status`,`comment`,`id`";
    $sql .= "FROM `budgetcontrol` ".$str."WHERE `department` = 'pu' order by `num` asc";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result))
    {
    // echo $row['item1'].' '.$row['item2'].' '.$row['item3'].'<br />'; if($row['porject'] == '物流费')
    {
    $grp_sum = array();

    $grp_sum['物流费']['item1'] += $row['item1'];
    $grp_sum['物流费']['item2'] += $row['item2'];
    $grp_sum['物流费']['item3'] += $row['item3']; print_r($grp_sum);//还是没有显示
    }
    }
      

  3.   

    为什么你的 mysql_fetch_array($result) 总是不加参数呢?看你的程序搞得我的思路都很混乱$arr = array($row);
    这个是每次都把$arr刷新了呀,如果不是你所希望的应该用$arr[] = foreach($row as $value)
    这个对$row有什么意义??循环内都加下标直接调用了,还要foreach么?$value完全没出现……
      

  4.   

    $grp_sum = array();这个也是每次都清空了……晕的很
      

  5.   

    mysql_fetch_array()默认是MYSQL_BOTH不是计算完一次要清一次么?2#的为什么也出不了结果?
      

  6.   

    $a = 0;
    $a += 1;
    $a = 0;
    $a += 1;
    ...10次重复后最后$a = ?清空了你的累计还有什么用?mysql_fetch_array()默认是MYSQL_BOTH
    MYSQL_BOTH 有用么?你的整数下标在哪使用了?
    不过这个在这段代码也没啥影响就算了,我只是提醒你,用字串和整数key混合要慎用,除非你的思路很清晰,否则foreach用起来查错查几天都没结果,自己要养成好的习惯,该字串就字串,该整数就整数
      

  7.   

    谢谢关于mysql_fetch_array()参数的提醒。
    可是我输出还是没有结果?不知道哪里有问题,你能帮我看看么?
      

  8.   

    把$grp_sum = array();提到while前面再有问题我就不清楚了,始终没怎么搞懂你的编程思路
      

  9.   

    while($row = mysql_fetch_array($result))
    {
    // echo $row['item1'].' '.$row['item2'].' '.$row['item3'].'<br />'; if($row['porject'] == '物流费')
    {
    //这里不是新建一个数组?
    //$grp_sum = array();

    $grp_sum['物流费']['item1'] += $row['item1'];
    $grp_sum['物流费']['item2'] += $row['item2'];
    $grp_sum['物流费']['item3'] += $row['item3'];
    }
    print_r($grp_sum);
    }
      

  10.   

    $grp_sum = array();
    while($row = mysql_fetch_array($result))
    {
    // echo $row['item1'].' '.$row['item2'].' '.$row['item3'].'<br />';if($row['porject'] == '物流费')
    {
    //这里不是新建一个数组?
    //$grp_sum = array();$grp_sum['物流费']['item1'] += $row['item1'];
    $grp_sum['物流费']['item2'] += $row['item2'];
    $grp_sum['物流费']['item3'] += $row['item3'];
    }
    print_r($grp_sum);
    }试一下吧
      

  11.   

    我的想法是针对数组中‘item1’,‘item2’,等等这些数在project=‘物流费’的时候进行求和,再将数据保存在一个数组中。
      

  12.   

    谢谢,我之前已经试过了。但是结果是:
    Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )一个15个空数组。我怎么能把值显示出来?
      

  13.   

    像这种的类似:$arr = array(array(1, 0.1), array(1, 0.3), array(2, 10), array(2, 20));
    $grp_sum = array();
    foreach ($arr as $value)
    {
        $grp_sum[$value[0]] += $value[1];
    }
    print_r($grp_sum).'<br />';
      

  14.   

    空数组表明if判断每次都是false检查你的数据,因为你是用汉字,所以还要检查编码
      

  15.   

    print_r(mysql_fetch_array($result));输出看看是什么结果另外用mysql_fetch_row($result)再试试