>백엔드 개발 >PHP 튜토리얼 >재귀적 PHP 함수는 어떻게 고유한 바코드 생성을 보장할 수 있습니까?

재귀적 PHP 함수는 어떻게 고유한 바코드 생성을 보장할 수 있습니까?

DDD
DDD원래의
2024-12-21 20:18:00611검색

How Can Recursive PHP Functions Ensure Unique Barcode Generation?

Recursion과 Return을 사용하여 PHP에서 고유한 바코드 생성

고유한 값을 생성하는 PHP 함수를 생성할 때 재귀는 유용한 도구가 될 수 있습니다. 이 예의 목표는 데이터베이스 열에 아직 존재하지 않는 임의의 바코드를 생성하는 것입니다.

문제 설명

사용자가 재귀 함수를 사용하여 이 기능을 구현하려고 시도했지만 기능이 때때로 고유 바코드 대신 "설정되지 않음"을 반환하는 문제가 발생했습니다. 사용자 코드는 다음과 같습니다.

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

해결 방법

원래 코드의 문제는 재귀 호출이 트리거될 때 생성된 바코드를 반환하지 못한다는 것입니다. 이 문제를 해결하려면 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(); // return added
  }
  else {
    return $barcode; 
  }
}

재귀 호출에 return 문을 포함하면 생성된 바코드가 스택 위로 전달되고 결국 초기 함수 호출.

재귀 제한에 대한 참고 사항

재귀 함수에는 재귀 제한이 있을 수 있다는 점에 유의하는 것이 중요합니다. PHP에는 재귀에 대한 최대 깊이 제한이 있으며, 이를 초과하면 오류가 발생합니다. 이를 방지하려면 최대 시도 횟수 또는 가능한 모든 옵션이 소진되었을 때 재귀를 종료하는 조건부 확인과 같은 일종의 종료 조건을 재귀 함수에 통합하는 것이 좋습니다.

위 내용은 재귀적 PHP 함수는 어떻게 고유한 바코드 생성을 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.