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

伊谢尔伦
Libérer: 2023-03-12 09:56:02
original
1423 Les gens l'ont consulté

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();
}
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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);
}
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal