国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php遞歸函數怎么用才有效

2024-09-04 11:42:22
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php遞歸函數怎么用才有效及php遞歸函數與非遞歸函數區別介紹,感興趣的朋友一起看看吧。

有關php遞歸函數的用法,分享幾個php遞歸函數的例子,在php編程中,使用遞歸進行函數調用很常見,遞歸函數用的好,可以提高代碼效率,通過例子學習php遞歸函數的使用。

一、什么是遞歸函數?

一個函數在它的函數體內調用它自身稱為遞歸調用, 這種函數稱為遞歸函數。

php遞歸函數與非遞歸函數有什么區別?

例一:使用靜態變量

代碼示例:

  1. function test(){ 
  2.  static $dig=0; 
  3.  if($dig++<10){ 
  4.   echo $dig
  5.   test(); 
  6.  } 
  7. test();//12345678910 

例二:使用遞歸函數和循環實現字符串逆轉排列

代碼示例:

  1. function unreverse($str){ 
  2.  for($i=1;$i<=strlen($str);$i++){ 
  3.   echo substr($str,-$i,1); 
  4.  } 
  5. unreverse("abcdefg");//gfedcbc 
  6. function reverse($str){ 
  7.  if(strlen($str)>0){ 
  8.   reverse(substr($str,1)); 
  9.   echo substr($str,0,1); 
  10.   return
  11.  } 
  12. reverse("abcdefg");//gfedcbc 

二、php遞歸函數使用實例

php遞歸使用示例(php遞歸函數),包括遞歸獲得角色ID字符串、遞歸獲取級聯角色信息數組、通過父角色的id獲取子角色信息。

例子:

代碼示例:

  1. //遞歸獲得角色ID字符串 
  2. function explodeRole($roleObj, &$resultStr){ 
  3.  if(0 < count($roleObj->childRoleObjArr)){ 
  4.  foreach($roleObj->childRoleObjArr as $childRoleObj){ 
  5.   if('' == $resultStr){ 
  6.   $resultStr .= "{$childRoleObj->id}"
  7.   }else
  8.   $resultStr .= ", {$childRoleObj->id}"
  9.   } 
  10.   explodeRole($childRoleObj$resultStr); 
  11.  } 
  12.  } 
  13. //遞歸獲取級聯角色信息數組 
  14. function makeRoleRelation(&$roleObjArr){ 
  15.  foreach($roleObjArr as $item){ 
  16.  $item->childRoleObjArr = getRoleObjArrByParentId($item->id); 
  17.  if(0 < count($item->childRoleObjArr)){ 
  18.   makeRoleRelation($item->childRoleObjArr); 
  19.  } 
  20.  } 
  21. //通過父角色的id獲取子角色信息  
  22. function getRoleObjArrByParentId($parentid){ 
  23.  $operCOGPSTRTSysRole = new COGPSTRTSysRole(); 
  24.  $operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn()); 
  25.  $operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}"); 
  26.  $roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable()); 
  27.  return isset($roleObjArr)?$roleObjArr:array(); 

php遞歸函數用法

例1:使用靜態變量實現遞歸。

代碼示例:

  1. function test(){ 
  2.  static $dig=0; 
  3.  if($dig++<10){ 
  4.  echo $dig
  5.  test(); 
  6.  } 
  7. test();//12345678910 

例2:使用遞歸函數和循環實現字符串逆轉排列。

代碼示例:

  1. function unreverse($str){ 
  2. for($i=1;$i<=strlen($str);$i++){ 
  3. echo substr($str,-$i,1); 
  4. unreverse("abcdefg"); 
  5. //gfedcbc 
  6. function reverse($str){ 
  7. if(strlen($str)>0){ 
  8. reverse(substr($str,1)); 
  9. echo substr($str,0,1); return
  10. reverse("abcdefg");//gfedcbc 

php遞歸函數有時可以循環替代,建議當不能用循環替代時再用,因為用循環我們更容易理解,更不容易出錯。 php遞歸函數 php支付遞歸函數,遞歸函數就是調用自己本身,這些函數特別適用于瀏覽動態數據結構,例如樹和列表。 幾乎沒有web應用程序要求使用復雜的數據結構。

例子:

代碼示例:

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

這個程序清單中實現兩個函數,這兩個函數都可以相反的順序打印字符串的內容 函數reversr_r是通過遞歸實現的,而函數reverse_i()是通過循環實現的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海门市| 淮北市| 东丰县| 恩施市| 武定县| 鄂尔多斯市| 呼伦贝尔市| 西畴县| 闸北区| 彰武县| 台前县| 仙桃市| 北碚区| 塘沽区| 大荔县| 岢岚县| 平谷区| 乐昌市| 扎赉特旗| 咸阳市| 武宁县| 白水县| 达拉特旗| 三门峡市| 葫芦岛市| 临高县| 镇巴县| 米泉市| 望都县| 教育| 西充县| 龙里县| 丹江口市| 五原县| 泸溪县| 高阳县| 法库县| 东平县| 临桂县| 永仁县| 安丘市|