0

我有一个记录集,当我从 MOODLE 数据库执行 mysql 查询时返回该记录集。

我得到的一个例子:

我得到了什么

我需要做的是在循环中计算“SCORE”字段。如果总分小于或等于 1,我必须显示每一行。如果“分数”超过 1,我必须只显示加起来不超过 1 的记录。

例子:

我需要的

因此,当我执行循环并将记录写入 csv 时,这就是我需要显示的内容:(记录 3 已被删除)。

有没有办法可以使用记录集来做到这一点?

我正在使用的代码的一个示例(不是实际代码,因为它正在写入 csv 并且令人困惑)是:

foreach ($recordset as $user) {
  echo 'Event Code' . $user->code . '<br />'; 
  echo 'Date' . $user->date. '<br />';
  echo 'UserId' . $user->UserId. '<br />';
  echo 'Fullname' . $user->Fullname. '<br />';
  echo 'Score' . $user->Score. '<br />';
}
4

3 回答 3

0

我不知道我是否理解正确,但似乎你会做这样的事情:

$sum = array();
foreach ($recordset as $user) {

  if(!isset($sum[$user->UserId])) { $sum[$user->UserId] = 0; }
  $sum[$user->UserId] += $user->Score;
  if($sum[$user->UserId] > 1) { continue; }

  echo 'Event Code' . $user->code . '<br />'; 
  echo 'Date' . $user->date. '<br />';
  echo 'UserId' . $user->UserId. '<br />';
  echo 'Fullname' . $user->Fullname. '<br />';
  echo 'Score' . $user->Score. '<br />';
}
于 2013-07-16T10:32:15.900 回答
0
$scores = 0;

    foreach ($recordset as $user) {
      $scores = $user->Score + $scores;
      if($scores <= 1){
      echo 'Event Code' . $user->code . '<br />'; 
      echo 'Date' . $user->date. '<br />';
      echo 'UserId' . $user->UserId. '<br />';
      echo 'Fullname' . $user->Fullname. '<br />';
      echo 'Score' . $user->Score. '<br />';
      }else{
        break;
      }
    }
于 2013-07-16T10:33:39.267 回答
0
$recordset = array(...);

if(!empty($recordset)) {

  //set the inital user and the score to 0
  $currentUser = $recordset[0]->UserId;
  $score = 0;

  foreach($recordset as $user) {

     if($user->UserId == $currentUser) {
       //if the user is still the same, just add the score...
       $score += $user->Score;
     } else {
       //...else reset the score and set the new user
       $score = 0;
       $currentUser = $user->UserId;
     }

     if ($score <= 1) {
       //output
     } else {
       continue;
     }

  }

}

这是一个工作示例:http ://codepad.viper-7.com/BCSaen

于 2013-07-16T10:40:57.520 回答