2013-12-10 67 views
2

我想生成6位隨機數,並檢查它是否在表中,如果存在的話產生了另外6位隨機數,再等等.. wriiten代碼如下檢查隨機數,生成無重複

$querySel1=mysqli_query($connect, "select dynamic_email_id from logis_contacts"); 
while($row = mysqli_fetch_row($querySel1)){ 
    $dynamic_id[] = $row[0];    
} 
$number = mt_rand(100000, 999999); 
dynamicEmailId($number, $dynamic_id); 


function dynamicEmailId($number, $dynamic_id){ 
    if(in_array($number, $dynamic_id)){  
    $new = mt_rand(100000, 999999); 
    dynamicEmailId($new, $dynamic_id);// here i am confused 
    } 
    else { 
    echo $number; 
    } 
} 

請提出一個更好的方式來實現這一目標

+0

什麼叫糊塗是什麼意思? – Mehdi

+0

請記住,您正在從表格中提取所有*現有記錄。如果該表未被定期修剪,那麼您將會將所有數據加載到內存中的成本非常高昂。相反,請考慮查詢您的隨機生成的ID是否已經存在於表中。 – DCoder

回答

1

*它的罰款請

function generateUniqueId($number,$fetchArray) { 
    if (!in_array($number,$fetchArray)) { 
    return $number; 
    } 
    else { 
    $newNumber = mt_rand(100000, 999999); 
    return generateUniqueId($newNumber, $fetchArray); 
    } 
}