0

MOODLE データベースから mysql クエリを実行すると返されるレコードセットがあります。

私が得るものの例:

私が得ているもの

私がする必要があるのは、ループ内で「SCORE」フィールドを計算することです。スコアの合計が 1 以下の場合、各行を表示する必要があります。「SCORE」が 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
$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 に答える
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 に答える