Maison > développement back-end > tutoriel php > Comment les fonctions PHP récursives peuvent-elles garantir une génération de codes-barres unique ?

Comment les fonctions PHP récursives peuvent-elles garantir une génération de codes-barres unique ?

DDD
Libérer: 2024-12-21 20:18:00
original
613 Les gens l'ont consulté

How Can Recursive PHP Functions Ensure Unique Barcode Generation?

Utiliser la récursion avec Return pour générer des codes-barres uniques en PHP

Lors de la création de fonctions PHP pour générer des valeurs uniques, la récursivité peut être un outil utile. Dans cet exemple, l'objectif est de créer un code-barres aléatoire qui n'est pas déjà présent dans une colonne de base de données.

Énoncé du problème

Un utilisateur a tenté d'implémenter cette fonctionnalité à l'aide d'une fonction récursive, mais rencontré un problème où la fonction renvoyait parfois « Non défini » au lieu d'un code-barres unique. Le code de l'utilisateur est le suivant :

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(); // original code
  }
  else {
    return $barcode; 
  }
}
Copier après la connexion

Solution

Le problème avec le code d'origine est qu'il ne parvient pas à renvoyer le code-barres généré lorsque l'appel récursif est déclenché. Pour résoudre ce problème, l'instruction return doit également être ajoutée à l'appel récursif :

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(); // return added
  }
  else {
    return $barcode; 
  }
}
Copier après la connexion

En incluant l'instruction return dans l'appel récursif, le code-barres généré est transmis dans la pile et finalement renvoyé par le appel de fonction initial.

Remarque sur les limites de récursion

Il est important de noter que les fonctions récursives peuvent avoir des limites de récursion. En PHP, il existe une limite de profondeur maximale pour la récursion qui, si elle est dépassée, générera une erreur. Pour éviter cela, il est recommandé d'incorporer une sorte de condition de sortie dans la fonction récursive, comme un nombre maximum de tentatives ou une vérification conditionnelle qui met fin à la récursion lorsque toutes les options possibles ont été épuisées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal