ホームページ  >  記事  >  バックエンド開発  >  PHPの再帰関数を効果的に使う方法

PHPの再帰関数を効果的に使う方法

jacklove
jackloveオリジナル
2018-05-22 15:16:531368ブラウズ

この記事では、PHP の再帰関数の効果的な操作について説明します。

PHP 再帰関数の使用法について、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 再帰関数の使用例

ロール ID 文字列の再帰的取得、カスケード ロール情報配列の再帰的取得、id を介した子ロール情報の取得など、php 再帰関数 (php 再帰関数) の使用例親の役割の。

例:

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

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 中国語 Web サイトを参照してください。

関連する推奨事項:

よく使用される PHP 関数のコレクション

WeChat 返金申請プロセス用の PHP 実装サンプル コード

PHP では、%s と %d は何を意味しますか?

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

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