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
DDDoriginal
2024-12-21 20:18:00692parcourir

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; 
  }
}

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; 
  }
}

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!

Déclaration:
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