好奇为什么循环不显示第二天的数据:
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;
}
基本上你对整个集合进行查询。
查看结果以构建一个易于使用的关联数组。
然后使用该数组对数据进行任何您想做的事情。
可重用性更高,更易于理解。
我正在尝试从存储值的数据库中读取。我试图每天添加所有值,并编写了以下代码来执行此操作。出于某种原因,只有第一天的行被汇总。我确信我的一个循环的条件不起作用是有原因的,但我想我忽略了它。任何快速浏览表示赞赏。
$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;
}
基本上你对整个集合进行查询。
查看结果以构建一个易于使用的关联数组。
然后使用该数组对数据进行任何您想做的事情。
可重用性更高,更易于理解。