Maison >développement back-end >tutoriel php >Explication détaillée des exemples d'utilisation de fonctions récursives PHP

Explication détaillée des exemples d'utilisation de fonctions récursives PHP

伊谢尔伦
伊谢尔伦original
2017-07-01 13:17:131428parcourir

Cet article présente principalement des exemples d'utilisation récursifs de php (fonction récursive php ), y compris l'obtention récursive de l'ID de rôle chaîne et l'obtention récursive de rôles en cascade Tableau d'informations, obtenir informations sur le personnage enfant via l'identifiant du personnage parent, les amis dans le besoin peuvent se référer à

//递归获得角色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();
}

utilisation de la fonction récursive php

Une fonction appelle son propre nom dans son corps de fonction est un appel récursif . Ce type de fonction est appelé fonction récursive. Cela a généralement une grande valeur pratique pour les programmeurs et est souvent utilisé pour décomposer des problèmes complexes en situations simples et identiques, et cela à plusieurs reprises jusqu'à ce que le problème soit résolu.

La différence entre utiliser des fonctions récursives et ne pas utiliser de fonctions récursives

Exemple 1 : Utiliser des variables statiques

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

Exemple 2 : Utiliser des fonctions récursives et des boucles pour inverser la disposition des chaînes

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

Les fonctions récursives peuvent souvent être remplacées par des boucles. Il est recommandé d'utiliser des boucles lorsque nous ne le pouvons pas, car les boucles sont plus faciles à comprendre et moins sujettes aux erreurs.

Fonction récursive php PHP paie des fonctions récursives. Les fonctions récursives s'appellent elles-mêmes. Ces fonctions sont particulièrement adaptées à la navigation dans des structures de données dynamiques, telles que des arbres et des listes.
Presque aucune application Web ne nécessite l'utilisation de structures de données complexes

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

Deux fonctions sont implémentées dans cette liste de programmes. Les deux fonctions peuvent imprimer le contenu d'une chaîne dans l'ordre inverse. est implémenté par récursion, et la fonction reverse_i() est implémentée via loop

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