我試圖使用rand()使其成爲數據庫中唯一的id。但如何確保這個隨機數字不會被重複?如何確保隨機數字不會重複?
<?php
$num = '';
for ($i = 0; $i < 9; $i++)
$num .= mt_rand(0, 9);
echo '<input name="counter" value="'.$num.'">';
?>
我試圖使用rand()使其成爲數據庫中唯一的id。但如何確保這個隨機數字不會被重複?如何確保隨機數字不會重複?
<?php
$num = '';
for ($i = 0; $i < 9; $i++)
$num .= mt_rand(0, 9);
echo '<input name="counter" value="'.$num.'">';
?>
如果要插入數據庫表(這就是我理解你),最好是在數據庫中創建(確保唯一索引,沒有重複的條目在表中的唯一值下面列在PHP的情況下,檢查重複的值不數組中已經存在。
<?php
$unique = array();
while(count($unique) < 9)
{
$num = mt_rand(0, 9);
if(isset($unique[$num]) == false)
$unique[$num] = true;
}
print_r($unique);
?>
或者像Amal Murali發佈的鏈接http://stackoverflow.com/questions/5612656/generating-unique-random-numbers-within-a-range-php使用PHP函數範圍和隨機播放。 – broadband
它的更好,如果你這樣做的方式。
首先得到你想要與range()
範圍然後你shuffle數組,所以你可以隨機獲得它。
現在如果你只想要5個,你可以使用array_slice。
$range = range(1, 20);
shuffle($range);
$random = array_slice($range, 0, 5);
print_r($random);
工作實施例:example
那它永遠不會被複制? – user3097736
它永遠不會被複制,你可以測試它,這是不可能被複制的。 –
'< 「 '$ NUM'」 的輸入名稱= 「計數器」 的值=>'是無效的PHP代碼。你應該使用'print'或'echo'。 – 2014-01-13 15:09:17
@SharanyaDutta:當然不是。但是它清楚了OP正在嘗試做什麼,而且這個元素與被問到的原始問題沒什麼關係。 –
然後使用一個條件語句首先檢查它是否在數據庫中,然後在'else'中如果發現它,則重新生成另一個,直到它不是重複的。你也可以使用UNIX時間戳,這是另一種選擇,它與'rand()'或'mt_rand()'<=更快。 –