php關於通過遞迴函式顯示所有分類的問題

2022-03-10 19:54:23 字數 3014 閱讀 4072

1樓:陽光上的橋

首先需要搞明白你的資料庫結構,你的檔案類別資料庫表 dangan_class 是不是三欄位:id、name、f_id,其中id為主鍵,f_id為自關聯的外來鍵,表示上一分類,0表示最上級分類,對不對?

樹狀列舉出所有類別的**可以這樣:

<?php

function zilei($fid,$level)mysql_free_result($query);

}zilei(0,0);

?>

為了結構簡單,我上面只做了刪除的**,修改的部分你自行加上,你也可以先除錯好了刪除的**再加。

**裡面的==是為了縮排,你可以換為全形的空白,或者其它符號。

2樓:匿名使用者

首先你這個是幾層巢狀關係?

例如是2層,需要父節點與子節點

第 1層 傳入引數 是父節點

第2層 傳入引數 是父節點與子節點

然後你再想遍歷的事情

3樓:

你的思路不太對,首先遞迴不是這麼用--!,然後取所有分類的話最好一次取出然後對陣列操作,生成樹形結構.

4樓:沃客吧

你的用法有問題,遞迴函式最後必須要返回,不能無限迴圈下去。

php 遞迴問題,想要將資料按照無限極分類的樣式顯示出來

php遞迴函式返回值問題

5樓:匿名使用者

看了一遍!沒看出什麼問題。最好貼出輸出效果,再看下!

6樓:匿名使用者

你沒發現嗎 你的get_str($id)值定義了乙個引數,而你遞迴的時候是傳遞2個引數的

第二個,遞迴的時候你沒有給返回值重新賦值累加,look ~~~like this

$str .= get_str($srow["id"],$leve+1);

7樓:

函式與自己**的函式都不一樣,怎麼能得到正確的結果?還有把資料表的結構和資料給出來才能給你分析嘛。

php遞迴函式的問題

8樓:匿名使用者

這個問題得從函式呼叫的時候記憶體中變化來理解,在一段php程式裡面,每次執行到函式部分時,記憶體都會開闢一片新的空間,(姑且稱之為空間吧),當遇到乙個函式開闢乙個空間的時候,也就是說$n=10的時候,先執行第乙個echo $n." ",這裡輸出乙個數字10吧,然後進入判斷語句,遇到test()函式,開闢乙個新空間,先不去看新空間裡面有什麼,下面的echo $n." ";肯定還是要執行的,現在等於說輸出了這樣的乙個結果10 test(9) 10,下面再看test9的情況,同理是不是輸出了10 9 test(8) 9 10,繼續執行下去,你會發現程式的結果就是你輸入的結果了。

希望對你有所幫助!

9樓:諫豆

因為你最後乙個echo $n的問題。

function test($n)

當==10的時候, 進入test(9), 這個函式執行完畢後,需要執行echo $n." ";;問題是test(9)也是個遞迴,所以一直到test(1)才可能執行 echo $n." ";, 依次往上返回。

10樓:匿名使用者

可以進去看一下。。。

php遞迴函式的問題解答

11樓:海獅

我覺得這個「--」最好少用。

現在很多程式設計教材對++、--的理解都是不準確的。

關鍵問題在於

當$num=4時

return $num+sum(--$num);

是希望表達 return 3+sum(3) 還是 return 4+sum(3)

實際上,這個語句的這兩個解釋都是正確的,你的理解可能和你的電腦理解不同。

--發生的時刻可能是整個語句的開始,也就是先$num=$num-1,然後再$num+sum($num);

--發生的時間只要早於sum($num)往裡面傳遞引數,並且在整個表示式的執行過程中就可以。

12樓:吐筆

童鞋你好,你會產生這樣的疑問是因為你沒有搞清楚函式引數的使用範圍,一級遞迴的過程,下來解析一下此函式的遞迴過程:

10 第一次遞迴 sum=10,先輸出10,執行遞迴後,demo裡面的 依然是10

9 第二次遞迴 sum=9,先輸出9,執行遞迴後,demo裡面的 依然是9

7 。

6 。

5 。

4 。

3 。

2 。

1 第10次遞迴 sum=1,先輸出1,執行遞迴後,demo裡面的 引數是1, 接著發生最後一次遞迴

0 第11次遞迴 demo裡面的引數值為0,故不再遞迴了,由於這次sum=0 故執行else echo "--------------------

";接著執行 echo $num."

"; 後返回sum=1 時 的 這裡接著執行: echo $num."";}

一次向後倒著執行 echo $num."

";} 故得到下面的結果!

--------------------------- 01

2345

678910

php遞迴無限分類的 如何統計總條數 以及對顯示的結果進行分頁?比如設定為每頁顯示10個 。

13樓:匿名使用者

每個節點都要記錄子節點的數量c。每新增乙個節點都要對各父和祖節點的子節點計數加1。這樣根節點會有總數的記錄。

這樣遞迴遍歷時也可以根據子節點數量c的來確定讀取的數量限制。比如 讀取條數計數<10 就繼續遞迴

在每個節點的表上 增加子節點的id集或計數,增加根節點到父節點路徑,會方便這些操作。

求教C語言的函式的遞迴呼叫,c語言函式遞迴呼叫看不懂了,求教

答案是16 fit 6 呼叫函式 fit 5 fit 4 繼續呼叫 fit 4 fit 3 fit 3 fit 2 繼續呼叫 fit 3 fit 2 fit 2 fit 1 fit 2 fit 1 fit 2 呼叫fit 2 fit 1 fit 2 fit 2 fit 1 fit 2 fit 1 f...

c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?

問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...

c語言12320用函式遞迴法

include include int jc int n return result int jcsum int n else void main int a int s,int c s是次 數,也是最大的 內數 c是初值容 include int main e n printf lf n e re...