當前位置:首頁 » 編程語言 » php類遞歸

php類遞歸

發布時間: 2024-05-10 22:33:55

1. php遞歸獲取目錄內文件封裝類分享

php遞歸獲取目錄內文件封裝類分享,可以遞歸子目錄
代碼如下:

代碼如下:
function
readFileFromDir($dir)
{

if
(!is_dir($dir))
{

return
false;

}

//打開目錄

$handle
=
opendir($dir);

while
(($file
=
readdir($handle))
!==
false)
{

//排除掉當前目錄和上一個目錄

if
($file
==
"."
||
$file
==
"..")
{

continue;

}

$file
=
$dir
.
DIRECTORY_SEPARATOR
.
$file;

//如果是文件就列印出來,否則遞歸調用

if
(is_file($file))
{

print
$file
.
'<br
/>';

}
elseif
(is_dir($file))
{

readFileFromDir($file);

}

}
}

調用方式:

代碼如下:
$dir
=
'/home/www/test';
readFileFromDir($dir);

查看php手冊的話,還有一個方法scandir也可以使用,不過這個方法會一次性獲取單級目錄下的所有文件,存放到數組里,如果目錄里的文件比較多的話,會卡。

2. PHP怎麼遞歸

下面我舉一個其他的例子,雖然不是族譜,但是原理都是一樣的。

在一些復雜的系統中,要求對信息欄目進行無限級的分類,以增強系統的靈活性。那麼PHP是如何實現無限級分類的呢?我們在本文中使用遞歸演算法並結合mysql數據表實現無限級分類。
遞歸,簡單的說就是一段程序代碼的重復調用,當把代碼寫到一個自定義函數中,將參數等變數保存,函數中重復調用函數,直到達到某個條件才跳出,返回相應的數據。
Mysql
首先我們准備一張數據表class,記錄商品分類信息。表中有三個欄位,id:分類編號,主鍵自增長;title:分類名稱;pid:所屬上級分類id。
class表結構:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入數據後,如圖:

如果要輸出json格式的數據,則可使用:

echo json_encode($list);

3. php遞歸無限極分類怎麼弄

給個函數你,調用get_category()就是一個數組格式的結果
function get_category($parent_id=0){
$arr=array();
$sql = "select * from category where parent_id=$parent_id";//查詢子級數據
$result = array(a_object,b_object,,,)=sql_query($sql);//查詢結果一個數組或列表格式,自己完善。
if($result){
foreach($result as $re){//循環數組
if(get_category($re.id))//如果子級不為空
$re['child'] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}

4. php遞歸的方法求和1+2+3+...+n

<?php
function add($n)
{
$result = 0;
for($i=1;$i<$n+1;$i++)
{
$result += $i;
}
return $result; 返回計算結果
}
echo add(5); //調用上面的函數
?>

5. 如何理解php中的遞歸函數 (詳細講解)

遞歸其實就是「一個函數的自調用」
在這個「自調用」的過程中,必須要有一個變化的「參數」,當這個「參數」達到你的期望值的時候,終止該「自調用」過程

拿樓主的程序來說

demo($n)內部又有調用demo($n-1),構成了「自調用」
且,$n又有一個「期望值」,即是$n>1,不滿足此條件時,該自調用終止

即是說,最後一個執行的demo是demo($n9-1),其中$n9=2,然後返回為1(因為執行了return 1)
則$n9*demo($n9-1)即等於 2*demo(2-1),又等於2*1=2;
則$n8*demo($n8-1)即等於 3*demo(3-1),又等於3*2=6;
則$n7*demo($n7-1)即等於 4*demo(4-1),又等於4*6=24;
……
依次類推

這樣想:
demo(1)是等於1,這個沒有疑問吧?
然後demo(2)等於2*demo(1)=2*1=2
然後demo(3)等於3*demo(2)=3*2=6
……
一直到demo(10)

6. php中用遞歸函數計算出16的4次方

functionfunc($x,$n)
{
if搏枯握($n<=0)
敗碰return1;
基慶return$x*func($x,$n-1);
}
echofunc(16,4);

7. php寫函數 根據子類(id)遞歸查找頂級父類(id) 返回父類名字 (表結構:id name pid)

你這種表結構叫鄰接緩租表,查詢或皮的方式通過自連接。如

SELECTt1.nameASlev1,t2.nameaslev2,t3.nameaslev3,t4.nameaslev4

FROMTbnameASt1

LEFTJOINTbnameASt2ONt2.pid=t1.id

LEFTJOINTbnameASt3ONt3.pid=t2.id

LEFTJOINTbnameASt4ONt4.pid=t3.id

WHEREt1.name='XXXX'

這種方法的主要局限是你需要為每層數據添加一個自連接,隨著層次的增加,自連接

變得越來越復雜,檢索的性能自然而然的也就下降了。當然這種結構在查詢前必須知道該節點所處的層級,否則無法確定自連接的深度。


鄰接表模型衫哪差的局限性很大,用純SQL實現有一定的難度。不妨考慮其他模型,比如嵌套模型。


嵌套模型的基本結構是樹型結構,SQL檢索比鄰接表要方便很多。



關於嵌套模型,PHPChina的第一期電子雜志PHPer也有過深入探討,請參考!

熱點內容
域名訪問量查詢 發布:2024-11-27 20:22:13 瀏覽:725
如何清理網頁帳號和登錄密碼 發布:2024-11-27 20:18:53 瀏覽:372
大發明解壓密碼 發布:2024-11-27 20:18:52 瀏覽:502
藍鷗c語言 發布:2024-11-27 20:14:38 瀏覽:813
阿里雲高配伺服器租用 發布:2024-11-27 20:13:40 瀏覽:758
國外圖片上傳 發布:2024-11-27 20:13:31 瀏覽:546
蘋果手機怎麼重置密碼 發布:2024-11-27 20:10:28 瀏覽:533
萬里紅存儲介質信息消除工具 發布:2024-11-27 20:10:13 瀏覽:387
氫怎麼存儲 發布:2024-11-27 20:08:46 瀏覽:837
安卓120w快充哪個好 發布:2024-11-27 19:53:40 瀏覽:478