2014-01-13 50 views
1

我試圖使用rand()使其成爲數據庫中唯一的id。但如何確保這個隨機數字不會被重複?如何確保隨機數字不會重複?

<?php 

$num = ''; 
for ($i = 0; $i < 9; $i++) 
    $num .= mt_rand(0, 9); 
echo '<input name="counter" value="'.$num.'">'; 
?> 
+2

'< 「 '$ NUM'」 的輸入名稱= 「計數器」 的值=>'是無效的PHP代碼。你應該使用'print'或'echo'。 – 2014-01-13 15:09:17

+1

@SharanyaDutta:當然不是。但是它清楚了OP正在嘗試做什麼,而且這個元素與被問到的原始問題沒什麼關係。 –

+0

然後使用一個條件語句首先檢查它是否在數據庫中,然後在'else'中如果發現它,則重新生成另一個,直到它不是重複的。你也可以使用UNIX時間戳,這是另一種選擇,它與'rand()'或'mt_rand()'<=更快。 –

回答

-1

如果要插入數據庫表(這就是我理解你),最好是在數據庫中創建(確保唯一索引,沒有重複的條目在表中的唯一值下面列在PHP的情況下,檢查重複的值不數組中已經存在。

<?php 
    $unique = array(); 

    while(count($unique) < 9) 
    { 
    $num = mt_rand(0, 9); 

    if(isset($unique[$num]) == false) 
     $unique[$num] = true; 
    } 

    print_r($unique); 
?> 
+0

或者像Amal Murali發佈的鏈接http://stackoverflow.com/questions/5612656/generating-unique-random-numbers-within-a-range-php使用PHP函數範圍和隨機播放。 – broadband

-2

它的更好,如果你這樣做的方式。

首先得到你想要與range()

範圍

然後你shuffle數組,所以你可以隨機獲得它。

現在如果你只想要5個,你可以使用array_slice

$range = range(1, 20); 
shuffle($range); 
$random = array_slice($range, 0, 5); 

print_r($random); 

工作實施例:example

+0

那它永遠不會被複制? – user3097736

+0

它永遠不會被複制,你可以測試它,這是不可能被複制的。 –