Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Verwendungsbeispiele für rekursive PHP-Funktionen

Detaillierte Erläuterung der Verwendungsbeispiele für rekursive PHP-Funktionen

伊谢尔伦
Freigeben: 2023-03-12 09:56:02
Original
1450 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich rekursive PHP--Anwendungsbeispiele (php-rekursive Funktion ) vorgestellt, einschließlich des rekursiven Abrufens der Rollen-ID Zeichenfolge und des rekursiven Abrufens von Kaskadenrollen-Informationsarrays Informationen zur untergeordneten Rolle können über die ID der übergeordneten Rolle aufgerufen werden.

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

Verwendung rekursiver PHP-Funktionen

Eine Funktion, die ihren eigenen Namen in ihrem Funktionskörper aufruft, ist ein rekursiver Aufruf . Diese Art von Funktion wird als rekursive Funktion bezeichnet. Dies hat normalerweise einen hohen praktischen Wert für Programmierer und wird häufig verwendet, um komplexe Probleme in einfache und identische Situationen zu zerlegen und dies wiederholt zu tun, bis das Problem gelöst ist.

Der Unterschied zwischen der Verwendung rekursiver Funktionen und der Nichtverwendung rekursiver Funktionen

Beispiel 1: Verwendung statischer Variablen

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

Beispiel 2: Verwendung rekursiver Funktionen und Schleifen zum Umkehren der Zeichenfolgenanordnung

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
Nach dem Login kopieren

Rekursive Funktionen können häufig durch Schleifen ersetzt werden. Es wird empfohlen, Schleifen zu verwenden, wenn dies nicht möglich ist, da Schleifen einfacher zu verstehen und weniger fehleranfällig sind.

php rekursive Funktion PHP bezahlt rekursive Funktionen, die sich selbst aufrufen. Diese Funktionen eignen sich besonders zum Durchsuchen dynamischer Datenstrukturen wie Bäume und Listen.
Fast keine Webanwendungen erfordern die Verwendung komplexer Datenstrukturen

<?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);
}
}
Nach dem Login kopieren

In diesem Programmlisting sind zwei Funktionen implementiert. Beide Funktionen können den Inhalt der Zeichenfolge in umgekehrter Reihenfolge ausgeben wird durch Rekursion implementiert, und die Funktion reverse_i() wird durch Schleife

implementiert

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendungsbeispiele für rekursive PHP-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage