账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    while 中處理訂單,如何產生不重複的數字?
    39
    0
    while ($row = mysqli_fetch_array($aa)){
    
          $public_order_id = date('Ymd', time()).rand(1,999999);

    因為在一瞬間會產生不止一筆
    我目前很白痴的做法是用 rand.....
    但是1,999999 還是有機率重複,因為是用 while 產生訂單!
    所以搞不好第一筆是產生222,第二十筆也會有 222 的機率!
    因為使用 time() 沒有用,時間會完全一模一樣,速度太快了
    除非產生的訂單超過20筆,時間搓個位數可能才會+1
    而且還要跟數據庫比對,如果有重複則回到上一步驟重新產生?
    我有一個ID是給程式看的,所以用 AUTO_INCREMENT
    但現在產生的是要給人看的
    想問一下更好的方式???

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ≮じòぴé、殇≯ 普通会员 1楼

      在 Python 中,你可以使用字典來儲存訂單的數字,然後在處理訂單時進行檢查,以確保每個數字都沒有被使用過。以下是一個示例:

      ```python order_dict = {}

      def process_order(order_id): if order_id in order_dict: print("Order ID already exists. Please choose another ID.") return else: order_dict[order_id] = 1

      # Process the order
      print(f"Processing order {order_id}...")
      

      process_order(1) # 假設 input 是 1 process_order(2) # 假設 input 是 2 ```

      在這個示例中,process_order 函數接受一個訂單 ID 作為輸入,然後檢查這個 ID 是否已經在字典 order_dict 中。如果在,則打印出錯誤消息並返回。否則,將數字 1 添加到字典中,並將订单 ID 保存為新的值。

      在處理訂單後,你可以再次檢查訂單 ID,以確保它已經被正確地使用。例如:

      python if order_id in order_dict: print("Order ID already exists. Please choose another ID.") else: print("Order ID is correct.")

      如果訂單 ID 已經存在,則打印出錯誤消息。如果訂單 ID 是正確的,則打印出 "Order ID is correct."。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部