gpt4 book ai didi

php彩票问题多人中奖问题

转载 作者:可可西里 更新时间:2023-11-01 08:08:27 26 4
gpt4 key购买 nike

我用 php 创建了一个彩票脚本。我现在的问题是选择不止一个获胜者。因为玩家的票上有可能有相同的号码。这里我提供两个表结构和源代码。

lotto_game {
id(int)
jackpot(int)
status(varchar10)
pick_1(int)
pick_2(int)
pick_3(int)
pick_4(int)
pick_5(int)
tickets_sold(int)
winner(text)
}

lotto_picks {
lotto_id(int)
user_id(int)
choice_1(int)
choice_2(int)
choice_3(int)
choice_4(int)
choice_5(int)
ticket_status(int)
}

这是我数据库中的两个表。例如,我们将创建 2 个用户,id 分别为 1 和 2。因此,当脚本运行时,假设将 lotto_game 状态从“事件”更改为“完成”,然后将随机彩票号码添加到每个 pick_*专栏。

$one = rand(1,30);
$two = rand(1,30);
$three = rand(1,30);
$four = rand(1,30);
$five = rand(1,30);

mysql_query("UPDATE `lotto_game` SET
pick_1 = '$one',
pick_2 = '$two',
pick_3 = '$three',
pick_4 = '$four',
pick_5 = '$five',
status = 'finished'

WHERE status = 'active'");

我承认这并不难。但这只是结束的开始。

$lotto['tickets'] = mysql_query("SELECT ticket_id FROM `lotto_picks` WHERE ticket_status='valid'");

@$lotto[winners] = mysql_query("SELECT ticket_id,user_id FROM `lotto_picks` WHERE choice_1 = '$one' AND choice_2 = '$two' AND choice_3 = '$three' AND choice_4 = '$four' AND choice_5 = '$five'");

$lotto['num_tickets'] = mysql_num_rows($lotto['tickets']);
@$lotto[winner_id] = mysql_fetch_array(@$lotto[winners]);
$lotto['jackpot'] = mysql_query("SELECT jackpot FROM `lotto_game` WHERE status='active'");

$lotto['winner_jackpot'] = mysql_fetch_array($lotto['jackpot']);
$lotto['num_winners'] = mysql_num_rows($lotto['winners']);
//echo @$lotto['num_tickets'];
//echo @$lotto['num_winners'];
$winner = $lotto['num_winners'];
//echo @$lotto['winner_id']['user_id'];
$jackpot = $lotto['winner_jackpot']['jackpot'];
$id = @$lotto[winner_id][user_id];
if ($winner == 1) {
mysql_query("UPDATE `character` SET
decivers = decivers +'$jackpot'
WHERE user_id='$id'");
}

这就是我想出的,它似乎真的适用于一个赢家。但我只是想不出从这里去哪里。我试过使用一些数组,但没有任何效果。我知道需要做什么,但不知道如何去做。

当我搜索获胜者时,我需要将他们所有的用户 ID 放入一个数组中。

所以额外的欺骗者就是金钱,如果有人对此感到困惑的话。票证的状态在这里并不重要,但如果您必须知道,它只是确定 ticket_status 是“有效”还是“无效”

最佳答案

我认为您为所选号码选择了错误的存储格式。标准方法是使用二进制值,如果选择数字 N,则设置第 N 位。

考虑这个例子:用户选择数字“2 4 5 9 11”。将相应的位设置为 1 会得到“10100011010”,即十进制 1306。现在彩票选择“4 7 9 12 13”,即“1100101001000”== 6472。对两个值执行按位 AND 并计算在结果:

SELECT BIT_COUNT(1306 & 6472)

这立即告诉我们用户有 2 个正确的选择。您可以轻松选择“完整”获奖者:

SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5

或按正确选择的数量对票进行排序

SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC

关于php彩票问题多人中奖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com