0

好的,所以我试图在每次用户完成一项任务时奖励大奖条目,但是当任务奖励超过一定数量时,我想给出多个条目。

让我分解一下。

当用户完成奖励 0.05 美元或更多的任务时,他们将获得 1 个进入累积奖金的机会。我想要达到的就是这个。当他们完成价值 0.50 美元的任务时,他们会额外获得 1 个条目,然后每多 0.25 美元,他们就会再获得 1 个条目,因此如果他们完成价值 1.00 美元的任务,他们应该总共获得 4 个条目。1 表示初始 0.05 美元,1 表示任务价值 0.50 美元,1 表示达到 0.75 美元,1 表示达到 1.00 美元

我不知道该怎么做。所以我在数据库中更新时所拥有的就是这个。

if($offprate >= $rafminp || $offcrate >= $rafminc){
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'1' WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
}

这只是最初的 0.15 美元

4

1 回答 1

1

我是不是想得太简单了?

$amount = 0.5;
$credits = 0;
switch($amount) {
  case 0.05: $credits = 1; break;
  case 0.50: $credits = 2; break;
  case 0.75: $credits = 3; break;
  case 1.00: $credits = 4; break;
}
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'$credits' WHERE username = ?");

甚至可能:

$all_amounts = array(0.05, 0.50, 0.75, 1.00);
$credits = array_search($amount, $all_amounts)+1; # returns -1 when not found

如果您没有确切的值,请将 switch 语句替换为 if-else 级联。


重新阅读您的问题,金额似乎没有上限。在这种情况下:

$credits = 0;
if($amount == 0.05)
  $credits = 1;
if($amount >= 0.50) 
  $credits = floor(2+($amount-0.50)/0.25);
于 2012-12-01T17:40:07.617 回答