簡體   English   中英

如何忽略或停止在php中重復隨機數

[英]How to Ignore or Stop Repeating of Random Numbers in php

我有一個表格。

當客戶提交表格時,我會將發票發送到他的電子郵件和我們的網站電子郵件(info@example.com)。

客戶提交表單時,我正在為每張發票生成一個隨機數。 發票編號看起來像#502689

因此,為此,我使用了諸如rand(99,999999)之類的Php隨機函數。 我不想再重復這個隨機數。

兩天前,我收到了一個發票號,例如#125459,兩天后,另一個客戶提交了表單,然后我又得到了發票號,即#125459

因此,我該如何忽略此隨機數的重復。 請幫我。

  1. 最好的方法是使用增量ID。 例如,如果您使用的是mysql,則可以將其設置為主鍵(如果它是int即可自動遞增)。 因此,eveytime在您創建新發票時將生成下一個id =>沒有重復項。

  2. 如果您想使用隨機編號,則必須重新鍵入以生成發票編號,直到不使用當前發票編號為止。 為此,您可以使用如下代碼:

     do { $invoice_id = rand(99, 99999); if(invoice number already exists) { //Use your code here to check if number is unique. $ok = false; //Invoice number is used. try again a new number } else { $ok = true; //Invoice number is not used } } while(!$ok) 
  3. 如果您生成的發票/秒數不超過1,則可以將time()用作ID(以秒為單位的unixtimestamp)。 但是,如果您在同一秒內生成2張發票,這將無濟於事。

  4. 如果您不想求數字,可以使用php的uniqid ()方法。

您始終必須對照現有的發票號進行核對,這就是@ daniel-dudas的解決方案所暗示的。 我也會推薦自動增量數據庫解決方案。

順便說一句,您還應該考慮到,在某些國家/地區,法律強迫您提供不斷增加的發票編號,而不是隨意增加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM