2011-05-16 42 views
1

我正在製作一個腳本,當玩家人數爲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'].' '; 
    } 

回答

4

不叫mt_rand在一個循環中,預先生成一個隨機的列表,隨便挑個數,當你需要它:

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

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

$隨機量=範圍(1,4); shuffle($ randoms); 而($一行x = mysql_fetch_array($ SQL)){ \t \t $隨機= array_shift($隨機量); \t echo $ random。' '$一行x [ '用戶名'。' 「; \t} – Logan 2011-05-16 11:30:24

+0

工作感謝! – Logan 2011-05-16 11:30:41