PHP号码票务系统

  • 本文关键字:系统 号码 PHP php
  • 更新时间 :
  • 英文 :


所以,我正在尝试制作票务系统。因此,用户将分配1000个票,然后我将生成一个从1到5000的数字,然后我需要它来选择用户。

我这样做的方式是一个数组,然后循环5000次并为每个用户分配了一张票,但是这与5,000,000之类的很大数字不起作用。因此,我正在尝试考虑最好的方法,但我不确定如何。

有建议吗?

    $users = array();
$ticketNum = 0;
$result = $MySQL->query("SELECT * FROM  `users` ");
while($row = $result->fetch_assoc()){
    $i = 0;
    while($i < $row['points']){
        $i++;
        $ticketNum++;
        $ar = array("ticketNum" => $ticketNum, "username" => $row['username']);
        array_push($users, $ar);
    }
}
$winningTicket = 2500;
foreach($players as $ar){
    if($winningTicket == $ar['ticketNum']){
        //winner
    }
}

我需要更多代码来建议一个完美的解决方案,并且也知道为什么要为一个人分配1000张门票?

但是您可以分配一个从键而不是通过循环所有数字,例如

$users[$userNumber]["from"] = 1;
$users[$userNumber]["to"] = 6;
$findNumber = rand(1,6);
$foundUser = false;
foreach($users as $userNumber => $user) {
  if ($user["from"] <= $findNumber && $user["to"] >= $findNumber) {
    $foundUser = $user;
    break;
  }
}
if ($foundUser) {
   print "Hooray, someone just got a ticket.";
}

,但听起来确实像是通过数据库以不同的方式解决的工作。

编辑:我在添加代码示例之前写了上面的内容,在您的情况下,我可能会执行以下操作。

$result = $MySQL->query("SELECT username FROM users ORDER BY RAND() LIMIT 1");
$winningUser = $result->fetch_assoc();
print "We got a winner: ".$winningUser["username"];

最新更新