【问题标题】:Curious why loop doesn't show second day of data:好奇为什么循环不显示第二天的数据:
【发布时间】:2015-04-02 19:23:40
【问题描述】:

我正在尝试从存储值的数据库中读取数据。我正在尝试添加每天的所有值,并编写了以下代码来做到这一点。出于某种原因,只有第一天的行被求和。我确信我的一个循环的条件不起作用是有原因的,但我想我忽略了它。任何快速浏览都表示赞赏。

$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;

}

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

【问题讨论】:

  • 您在两个循环中为迭代器 ($i) 使用相同的变量名。这可能会导致问题。此外,您不应该让您的查询处于循环中。您应该查询整个集合,然后遍历结果。
  • ^ 您还需要查看缩进。由于缺少缩进,您可能忘记了第二个 for 循环在另一个 for 循环中。

标签: php loops nested-loops


【解决方案1】:

在这里扩展我的评论是我将如何重写代码以改进它:

$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; 
}

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

查看结果以构建一个易于使用的关联数组。

然后使用该数组对数据做任何你想做的事情。

更加可重用且易于理解。

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2023-01-10
    • 2019-12-23
    相关资源
    最近更新 更多