ホームページ  >  記事  >  バックエンド開発  >  PHPの再帰関数の詳しい説明

PHPの再帰関数の詳しい説明

小云云
小云云オリジナル
2018-02-26 10:07:273595ブラウズ

PHP 再帰関数の使用法について、PHP プログラミングでは再帰関数を使用してコードの効率を向上させることがよくあります。例を通して。

1. 再帰関数とは何ですか?

関数本体内でそれ自体を呼び出す関数は、再帰呼び出しと呼ばれます。 このような関数を再帰関数と呼びます。

PHPの再帰関数と非再帰関数の違いは何ですか?

例 1: 静的変数の使用

コード例:

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

例 2: 再帰関数とループを使用して文字列の逆配置を実現する

コード例:

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 再帰関数の使用例

php 再帰使用例(php 再帰関数)。これには、ロール ID 文字列の再帰的取得、カスケード ロール情報配列の再帰的取得、親ロールの ID を介した子ロール情報の取得が含まれます。

例:

コード例:

//递归获得角色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 再帰関数の使用法

例 1: 静的変数を使用して再帰を実装します。

コード例:

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

例 2: 再帰関数とループを使用して、文字列の配置を逆にします。

コード例:

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 の再帰関数はループで置き換えることができる場合があります。ループを使用したほうが理解しやすく、エラーが発生しにくいため、ループを使用できない場合は再帰関数を使用することをお勧めします。 PHP の再帰関数 PHP は再帰関数を呼び出します。これらの関数は、ツリーやリストなどの動的なデータ構造を参照するのに特に適しています。 複雑なデータ構造の使用を必要とする Web アプリケーションはほとんどありません。

例:

コード例:

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

このプログラムリストは 2 つの関数を実装しており、どちらの関数も文字列の内容を逆順で出力できます。関数 reversr_r は再帰によって実装され、関数 reverse_i() は実装されます。ループで実装されます。

関連する推奨事項:

phpは再帰関数を通じてディレクトリ全体を削除します

JavaScriptの再帰関数の問題解決

phpでの再帰関数の呼び出しの説明

以上がPHPの再帰関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。