>백엔드 개발 >PHP 튜토리얼 >PHP 재귀 함수 사용 예에 ​​대한 자세한 설명

PHP 재귀 함수 사용 예에 ​​대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-01 13:17:131428검색

이 글에서는 역할 IDstring를 재귀적으로 획득하고, 계단식 역할 정보 배열을 재귀적으로 획득하고, 상위 역할의 ID를 통해 하위 역할 정보를 획득하는 등 PHP 재귀사용 예제(php 재귀 함수)를 주로 소개합니다. 니드프렌즈는

//递归获得角色ID字符串
function explodeRole($roleObj, &$resultStr){
  if(0 < count($roleObj->childRoleObjArr)){
    foreach($roleObj->childRoleObjArr as $childRoleObj){
      if(&#39;&#39; == $resultStr){
        $resultStr .= "{$childRoleObj->id}";
      }else{
        $resultStr .= ", {$childRoleObj->id}";
      }
      explodeRole($childRoleObj, $resultStr);
    }
  }
}

//递归获取级联角色信息数组
function makeRoleRelation(&$roleObjArr){
  foreach($roleObjArr as $item){
    $item->childRoleObjArr = getRoleObjArrByParentId($item->id);
    if(0 < count($item->childRoleObjArr)){
      makeRoleRelation($item->childRoleObjArr);
    }
  }
}

//通过父角色的id获取子角色信息  
function getRoleObjArrByParentId($parentid){
  $operCOGPSTRTSysRole = new COGPSTRTSysRole();
  $operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn());
  $operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}");
  $roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable());
  return isset($roleObjArr)?$roleObjArr:array();
}

php

에서 재귀함수 사용법을 참고할 수 있습니다. 함수 본체 내에서 자신을 호출하는 함수를 재귀호출이라고 합니다. 이런 종류의 함수를 재귀함수라고 합니다. 이는 일반적으로 프로그래머에게 실용적인 가치가 높으며, 복잡한 문제를 간단하고 동일한 상황으로 분해하고 문제가 해결될 때까지 이를 반복적으로 수행하는 데 자주 사용됩니다.

재귀 함수를 사용하는 것과 재귀 함수를 사용하지 않는 것의 차이점

예제 1: 정적 변수 사용

function test(){
  static $dig=0;
  if($dig++<10){
    echo $dig;
    test();
  }
}
test();//12345678910

예 2: 재귀 함수와 루프를 사용하여 문자열의 역순 정렬 달성

function unreverse($str){
  for($i=1;$i<=strlen($str);$i++){
    echo substr($str,-$i,1);
  }
}
unreverse("abcdefg");//gfedcbc

function reverse($str){
  if(strlen($str)>0){
    reverse(substr($str,1));
    echo substr($str,0,1);
    return;
  }
}
reverse("abcdefg");//gfedcbc

재귀 함수 우리는 여러 번 이를 다음으로 대체할 수 있습니다. 루프로 대체할 수 없는 경우에만 사용하는 것이 좋습니다. 이해하기 쉽고 오류가 발생할 가능성이 적기 때문입니다.

php 재귀 함수 PHP는 재귀 함수 호출을 자체적으로 수행합니다. 이러한 함수는 특히 트리 및 목록과 같은 동적 데이터 구조를 탐색하는 데 적합합니다.
복잡한 데이터 구조를 사용할 필요가 없는 웹 애플리케이션은 거의 없습니다.

<?php
function reversr_r($str)
{
if (strlen($str)>0)
reverse_r(substr($str,1));
echo substr($str,0,1);
return;
}
?>

<?php
function reverse_i($str)
{
for($i=1;$i<=strlen($str);$i++)
{
echo substr($str,-$i,1);
}
}

이 프로그램 목록은 문자열의 내용을 역순으로 인쇄할 수 있는 두 가지 함수를 구현합니다. reversr_r 함수는 재귀적으로 구현되며 reverse_i() 함수는 다음과 같습니다. 루프를 통해 구현

위 내용은 PHP 재귀 함수 사용 예에 ​​대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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