Home  >  Article  >  Backend Development  >  Detailed explanation of php recursive function

Detailed explanation of php recursive function

小云云
小云云Original
2018-02-26 10:07:273598browse

Regarding the usage of PHP recursive functions, share several examples of PHP recursive functions. In PHP programming, it is very common to use recursion to make function calls. Recursive functions can be used well to improve code efficiency. Learn PHP recursive functions through examples. use.

1. What is a recursive function?

A function calling itself within its function body is called a recursive call. This kind of function is called a recursive function.

What is the difference between recursive functions and non-recursive functions in php?

Example 1: Using static variables

Code example:

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

Example 2: Using recursive functions and loops to implement string reversal arrangement

Code example:

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

2. PHP recursive function usage examples

php recursive usage examples (php recursive function), including recursively obtaining the role ID string, recursively obtaining the cascade role information array, and recursively obtaining the cascade role information array through the parent role. id gets sub-role information.

Example:

Code example:

//递归获得角色ID字符串
function explodeRole($roleObj, &$resultStr){
 if(0 < count($roleObj->childRoleObjArr)){
 foreach($roleObj->childRoleObjArr as $childRoleObj){
  if('' == $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 recursive function usage

Example 1: Use static variables to implement recursion.

Code example:

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

Example 2: Use recursive functions and loops to achieve string reversal.

Code example:

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 recursive functions can sometimes be replaced by loops. It is recommended to use them when loops cannot be used, because it is easier for us to understand and less prone to errors using loops. PHP recursive functions PHP pays recursive functions. Recursive functions call themselves. These functions are particularly suitable for browsing dynamic data structures, such as trees and lists. Few web applications require the use of complex data structures.

Example:

Code example:

reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

This program list implements two functions, both of which can print the contents of the string in reverse order. The function reversr_r is It is implemented through recursion, and the function reverse_i() is implemented through loops.

Related recommendations:

php deletes the entire directory through a recursive function

Solution to the problem of recursive functions in JavaScript

Explanation on calling recursive functions in php

The above is the detailed content of Detailed explanation of php recursive function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn