我有一个记录集,当我从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 />';
}
答案 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