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

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

伊谢尔伦
伊谢尔伦Original
2017-07-01 13:17:131362Durchsuche

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

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

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

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

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!

Stellungnahme:
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