
//递归获得角色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付款递归函数,递归函数是调用自身,这些函数特别适合浏览动态数据结构,例如树和列表.
很少有Web应用程序需要复杂的数据结构
<?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);
}
}
此程序列表中实现了两个函数,并且两个函数都可以以相反的顺序打印字符串的内容
reverser_r函数通过递归实现,reverse_i()函数通过循环实现
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-166954-1.html
最好的办法就是干掉它