고유한 값을 생성하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!