首頁 > 後端開發 > php教程 > 為什麼我的遞歸 PHP 條碼產生器有時會回傳「未設定」?

為什麼我的遞歸 PHP 條碼產生器有時會回傳「未設定」?

DDD
發布: 2024-12-20 21:12:12
原創
221 人瀏覽過

Why Does My Recursive PHP Barcode Generator Sometimes Return

如何在PHP 中處理遞歸和結果檢索

問題:

要產生唯一的條碼,遞歸函數是用於確保資料庫中不存在重複條目。但是,該函數有時會傳回“Not Set”而不是唯一的數字。確定原因並修正以下有缺陷的程式碼:

function generate_barcode() {
    $barcode = rand(1, 10);
    $bquery = mysql_num_rows(mysql_query("SELECT * FROM stock_item WHERE barcode='$barcode'"));
    if ($bquery == 1)
        generate_barcode();
    else
        return $barcode;
}
登入後複製

答案:

問題在於遞歸呼叫缺少 return 語句。這意味著函數不會傳回該遞歸分支中產生的數字,可能會導致「未設定」錯誤。

要解決此問題,請修改遞歸呼叫以傳回產生的數字:

function generate_barcode() {
    $barcode = rand(1, 10);
    $bquery = mysql_num_rows(mysql_query("SELECT * FROM stock_item WHERE barcode='$barcode'"));
    if ($bquery == 1)
        return generate_barcode(); // changed!
    else
        return $barcode;
}
登入後複製

額外考慮:

防止在所有數字都為的情況下無限遞歸保留,包含一個停止遞歸並引發錯誤的條件至關重要,例如:

if ($recursiveCalls > 1000) // or any suitable limit
  throw new Exception('Failed to generate a unique barcode within the specified limit.');
登入後複製

透過合併這些修改,該函數將始終傳回唯一的條碼並處理所有數字的邊緣情況正在被帶走。

以上是為什麼我的遞歸 PHP 條碼產生器有時會回傳「未設定」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板