如何给玩家提供独特的数字

时间:2011-05-16 11:20:09

标签: php while-loop

我正在创建一个脚本,当玩家数量为4时我会给玩家编号。现在我有一个玩家桌子,我会用玩家编号更新但是我似乎无法同时使用唯一编号和更新表循环...在脚本的这种情况下,我将给所有3号球员......

到目前为止我所拥有的是:

<?PHP 
include '../config.php';
$con = mysql_connect($hostip, $mysqluser, $mysqlpass);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($mysqldatabase, $con);
$gameid = '08e893ac1c4446758ee44423c173c5aa';
/////////////////////////// mysq connect end

$sql=mysql_query("SELECT DISTINCT username FROM table");
$pn = array();
 while ( count($pn) < 4 ) {
    $random = mt_rand(1,4);       
    if ( !in_array($random,$pn) ) {
      $pn[] = $random;
      $rr = $random;
      while ($rowx = mysql_fetch_array($sql)) {
        echo $rr.'  '.$rowx['username'].' ';
      }
    }
 }
print_r($pn); ?>

输出

3 user1 3 user2 3 user3 3 user4 Array ( [0] => 3 [1] => 1 [2] => 4 [3] => 2 )

我想它只能获得第一个数字......我也尝试过其他方式,但这似乎是一个更好的方法,以找到解决方案。

//编辑解决方案

$randoms = range(1, 4);
shuffle($randoms);




    while ($rowx = mysql_fetch_array($sql)){
         $random = array_shift($randoms);
    echo $random.'  '.$rowx['username'].' ';
    }

1 个答案:

答案 0 :(得分:4)

不要在循环中调用mt_rand,提前生成随机列表,只需在需要时选择数字:

$randoms = range(1, 4);
shuffle($randoms);

while(...) {
  $random = array_shift($randoms);