php 数组 类,php把无限级分类生成数组的类

你是否遇到需要把无限级分类循环出来,是不是很头痛。

比如,要循环出一个SELECT,或一个TABLE,要写一大堆判断。

我的做法是生成数组,可以重复调用,直接循环数组就行了。为了方便,把它写成了类:class.asp。

返回所有分类的数组,并按顺序排列

有4个属性:

复制代码 代码如下:

set aa=new classlist

aa.id="id"//编号的名称

aa.classname="classname"//分类名称

aa.pid="pid"//父ID名称

aa.db_name="class"//表名

list=aa.arrylist()

?>

类:classlist

复制代码 代码如下:

class classlist

private c_id

private c_db_name

private c_pid

private c_classname

public property let id(str)

c_id = str

end property

public property let db_name(str)

c_db_name = str

end property

public property let pid(str)

c_pid = str

end property

public property let classname(str)

c_classname = str

end property

dim list()

dim i,n

Private Sub Class_Initialize()'初始化变量

i=0

n=0

End Sub

public function classarry(thisid,pid)'取得下级ID

if pid>0 then

sql="select * from "&c_db_name&" where "&c_pid&"="&thisid

else

sql="select * from "&c_db_name&" where "&c_id&"="&thisid

end if

set rs_c=conn.execute(sql)

n=n+1

do while not rs_c.eof

list(0,i)=rs_c(c_id)'装入数组中

list(1,i)=rs_c(c_classname)

list(2,i)=n

'n=n+1

i=i+1

thisid=classarry(rs_c(c_id),1)'这里递归调用,直到最后一个子类

rs_c.movenext

loop

n=n-1

rs_c.close

end function

public function arrylist()'循环出所有根类

set rs_c=conn.execute("select count("&c_id&") from "&c_db_name)

lenght=rs_c(0)

rs_c.close

redim list(2,lenght)'设置数组

set rs1=conn.execute("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0")

do while not rs1.eof

call classarry(rs1(c_id),0)

'n=1

rs1.movenext

loop

rs1.close

arrylist=list

end function

end class

%>

实例测试:

表class

字段

id:自动编号

classname:名称

pid:父ID

文件名:test.asp

复制代码 代码如下:

Set conn=Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.Recordset")

StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ="

StrDSN = StrDSN & Server.MapPath("test.mdb")

conn.Open strDSN

function ins(num)

str=""

for ii=1 to num

str=str&"|-"

next

ins=str

end function

set aa=new classlist

aa.id="id"

aa.classname="classname"

aa.pid="pid"

aa.db_name="class"

list=aa.arrylist()

response.write "

ID名称

for j=0 to ubound(list,2)

response.write "

"&list(0,j)&""&list(1,j)&""&list(2,j)&""

next

response.write "

"

'response.write list(1,3)

%>

response.write ins(list(2,i))

response.write list(1,i)%>

循环结果:

www.jquerycn.cn/code/class/test.asp

基本可以满足通常的需要啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值