Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt meine rekursive PHP-Funktion manchmal „Not Set' anstelle eines eindeutigen Barcodes zurück?

Warum gibt meine rekursive PHP-Funktion manchmal „Not Set' anstelle eines eindeutigen Barcodes zurück?

DDD
Freigeben: 2024-12-30 20:54:12
Original
401 Leute haben es durchsucht

Why Does My Recursive PHP Function Sometimes Return

Verwendung von Return innerhalb rekursiver Funktionen in PHP

In PHP können rekursive Funktionen ein leistungsstarkes Werkzeug zur Lösung komplexer Probleme sein. Beim Schreiben rekursiver Funktionen ist die ordnungsgemäße Verwendung der Return-Anweisung von entscheidender Bedeutung, um eine korrekte Logik sicherzustellen und Endlosschleifen zu vermeiden.

Ein Fall, in dem eine solche Verwendung häufig übersehen wird, ist die Generierung eindeutiger Werte, wie im folgenden Szenario veranschaulicht:

Frage:

Ziel ist es, zufällige Barcodes zu generieren, die noch nicht in einer Datenbankspalte vorhanden sind. Die Funktion verwendet Rekursion, um wiederholt Zahlen zu generieren, bis eine eindeutige Zahl gefunden wird. Allerdings gibt die Funktion manchmal „Nicht gesetzt“ zurück, anstatt eine eindeutige Nummer zu erzeugen.

Code:

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;
  }
}
Nach dem Login kopieren

Antwort:

Das Problem im bereitgestellten Code liegt im rekursiven Aufruf. Um sicherzustellen, dass die Funktion korrekt eine eindeutige Nummer zurückgibt, muss die neu generierte Nummer vom rekursiven Aufruf selbst zurückgegeben werden:

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(); // updated
  } else {
    return $barcode;
  }
}
Nach dem Login kopieren

Durch die Rückgabe der generierten Nummer vom rekursiven Aufruf stellt die Funktion sicher, dass der Anrufer erhält die eindeutige Nummer.

Zusätzliche Überlegungen:

Es ist wichtig, eine Exit-Bedingung für die einzufügen Fall, in dem alle Zahlen genommen werden. Wenn keine solche Bedingung vorliegt, ruft sich die Funktion rekursiv auf, bis das PHP-Rekursionslimit erreicht ist, was zu einem Fehler führt.

Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive PHP-Funktion manchmal „Not Set' anstelle eines eindeutigen Barcodes zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage