在记录集中添加值,其中userid是相同的php

时间:2013-07-16 10:25:00

标签: php moodle recordset

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

我得到的一个例子:

what I am getting

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

示例:

what I need

所以当我执行循环并将记录写入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 />';
}

3 个答案:

答案 0 :(得分: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 />';
}

答案 1 :(得分: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;
      }
    }

答案 2 :(得分: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