好奇为什么循环没有';t显示第二天的数据:


Curious why loop doesn't show second day of data:

我正试图从存储值的数据库中读取。我每天都在尝试添加所有的值,并为此编写了以下代码。出于某种原因,只有第一天的行被求和。我确信我的一个循环的状况不起作用是有原因的,但我想我已经看得太多了。任何快速的一瞥都很感激。

$readsum =array();
$totalsum = 0;

for ($i=1; $i <= $numdays; $i++){
$readresult=mysql_query("SELECT * FROM `test`.`cost_table` WHERE `Day`='$i'",$LinkID);

while($rows=mysql_fetch_array($readresult)){
    $readsum[]=$rows['Yield'];
    $readsum[]=$rows['Rolls'];
    $readsum[]=$rows['Utilities'];
    $readsum[]=$rows['Payroll'];
    $readsum[]=$rows['Direct Materials'];
    $readsum[]=$rows['3rd Party'];
    $readsum[]=$rows['Supplies'];
    $readsum[]=$rows['Packaging'];
    $readsum[]=$rows['Rental'];
    $readsum[]=$rows['Other'];
}   
for($i=0; $i <= 9; $i++){
    $totalsum = $totalsum + $readsum[$i];
    }

echo $totalsum;
$totalsum = 0;
}

目前,输出只有一个值;数据库第一行的总和。作为一个月的第二天,它应该计算第二个和,并呼应它。

为了扩展我的评论,我将如何重写代码来改进它:

$readsum =array();
$totalsum = 0;
$readresult=mysql_query("SELECT * FROM `test`.`cost_table` ORDER BY `Day`",$LinkID);
while($rows=mysql_fetch_array($readresult)){
    $readsum[$rows['Day']][]=$rows['Yield'];
    $readsum[$rows['Day']][]=$rows['Rolls'];
    $readsum[$rows['Day']][]=$rows['Utilities'];
    $readsum[$rows['Day']][]=$rows['Payroll'];
    $readsum[$rows['Day']][]=$rows['Direct Materials'];
    $readsum[$rows['Day']][]=$rows['3rd Party'];
    $readsum[$rows['Day']][]=$rows['Supplies'];
    $readsum[$rows['Day']][]=$rows['Packaging'];
    $readsum[$rows['Day']][]=$rows['Rental'];
    $readsum[$rows['Day']][]=$rows['Other'];
}   
//var_dump $readsum to see what you have to work with
foreach($readsum as $day=>$dataArray){
  foreach($dataArray as $rsum){
    $totalsum = $totalsum + $rsum;
  }
  echo $totalsum;
  $totalsum = 0; 
}

基本上,您对整个集合进行查询。

浏览结果,构建一个易于使用的关联数组。

然后使用该数组对数据执行任意操作。

更易于重复使用和理解。