ホームページ  >  記事  >  バックエンド開発  >  PHP は無限レベルを配列に分類します

PHP は無限レベルを配列に分類します

WBOY
WBOYオリジナル
2016-07-25 09:03:29988ブラウズ
  1. set aa=new classlist
  2. aa.id="id"//番号の名前
  3. aa.classname="classname"//分類名
  4. aa.pid="pid"/ / 親ID名
  5. aa.db_name="class"//テーブル名
  6. list=aa.arrylist()
  7. ?>
コードをコピー

クラス: classlist

  1. < Classclasslist
  2. privatec_id
  3. privatec_db_name
  4. privatec_pid
  5. privatec_classname
  6. publicプロパティlet id(str)(str)
  7. c_id=str
  8. endプロパティdb_name(str)
  9. c_db_name = str
  10. endプロパティ
  11. public property let pid(str)
  12. c_pid = str
  13. endプロパティ
  14. public property let classname(str)
  15. c_classname = str
  16. endプロパティ
  17. dim list()
  18. dim i,n
  19. Private Sub Class_Initialize( ) '変数を初期化
  20. i=0
  21. n=0
  22. End Sub
  23. public function classarry(thisid,pid)'従属IDを取得
  24. if pid>0 then
  25. sql="select * from "&c_db_name&" where "&c_pid&"= "&thisid
  26. else
  27. sql="select * from "&c_db_name&" where "&c_id&"="&thisid
  28. end if
  29. set rs_c=conn.execute(sql)
  30. n=n+1
  31. do while not rs_c.eof
  32. list( 0, i)=rs_c(c_id)' が配列にロードされます
  33. list(1,i)=rs_c(c_classname)
  34. list(2,i)=n
  35. 'n=n+1
  36. i=i+1
  37. thisid=classarry (rs_c(c_id),1)' は、最後のサブクラス
  38. rs_c.movenext
  39. loop
  40. n=n-1
  41. rs_c.close
  42. end function
  43. public function arrylist()' がすべてのルートをループアウトするまで、ここで再帰的に呼び出されます。クラス
  44. set rs_c=conn.execute("select count("&c_id&") from "&c_db_name)
  45. lenght=rs_c(0)
  46. rs_c.close
  47. redim list(2,length)'set array
  48. set rs1=conn.execute (" select "&c_id&" from "&c_db_name&" where "&c_pid&"=0")
  49. rs1.eof
  50. call classarry(rs1(c_id),0)
  51. 'n=1
  52. rs1.movenext
  53. loop
  54. rs1 ではないときに実行します。 close
  55. arrylist=list
  56. end function
  57. end class
  58. %>
コードをコピー
サンプルテスト: テーブルクラス 分野 ID: 自動番号 クラス名: 名前 pid: 親ID ファイル名: test.asp

  1. <%
  2. Set conn=Server.CreateObject("ADODB.connection")
  3. Set Rs = Server.CreateObject( "ADODB.Recordset")
  4. StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ="
  5. StrDSN = StrDSN & Server.MapPath("test.mdb")
  6. conn.Open strDSN
  7. function ins( num)
  8. str=""
  9. for ii=1 to num
  10. str=str&"|-"
  11. next
  12. ins=str
  13. end function
  14. set aa=new classlist
  15. aa.id="id"
  16. aa.classname= "クラス名"
  17. aa.pid="pid"
  18. aa.db_name="クラス"
  19. list=aa.arrylist()
  20. response.write ""
  21. for j=0 to ubound(list,2)
  22. response.write "
  23. ID名前カテゴリ
    "&list(1,j)&""&list(2,j)&" "
  24. next
  25. response.write "
  26. "
  27. 'response.write list(1,3)
  28. %>
コードをコピー
ループ結果: bbs.it-home.org/code/class/test.asp 基本的には通常のニーズを満たすことができます。

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