>백엔드 개발 >PHP 튜토리얼 >내 재귀 PHP 함수가 때때로 고유 바코드 대신 '설정되지 않음'을 반환하는 이유는 무엇입니까?

내 재귀 PHP 함수가 때때로 고유 바코드 대신 '설정되지 않음'을 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-30 20:54:12400검색

Why Does My Recursive PHP Function Sometimes Return

PHP의 재귀 함수 내에서 반환 활용

PHP에서 재귀 함수는 복잡한 문제를 해결하는 강력한 도구가 될 수 있습니다. 재귀 함수를 작성할 때 올바른 논리를 보장하고 무한 루프를 방지하려면 return 문을 적절하게 활용하는 것이 중요합니다.

이러한 활용이 일반적으로 간과되는 경우는 다음 시나리오에 예시된 것처럼 고유한 값을 생성할 때입니다.

질문:

목표는 데이터베이스에 아직 없는 임의의 바코드를 생성하는 것입니다. 열. 이 함수는 재귀를 사용하여 고유한 숫자를 찾을 때까지 반복적으로 숫자를 생성합니다. 그러나 이 함수는 고유 번호를 생성하는 대신 "설정되지 않음"을 반환하는 경우도 있습니다.

코드:

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

답변:

제공된 코드의 문제는 재귀 호출에 있습니다. 함수가 고유 번호를 올바르게 반환하는지 확인하려면 새로 생성된 번호가 재귀 호출 자체에서 반환되어야 합니다.

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

재귀 호출에서 생성된 번호를 반환함으로써 함수는 호출자가 고유번호를 받습니다.

추가 고려사항:

필수 모든 숫자를 취하는 경우의 종료 조건. 그러한 조건이 없으면 PHP 재귀 제한에 도달할 때까지 함수가 재귀적으로 호출되어 오류가 발생합니다.

위 내용은 내 재귀 PHP 함수가 때때로 고유 바코드 대신 '설정되지 않음'을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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