SoFunction
Updated on 2025-04-12

Generate an array by classifying infinite levels

<% 
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()'Initialize variable
i=0 
n=0 
End Sub 
public function classarry(thisid,pid)' Obtain the subordinate 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=(sql) 
n=n+1 
do while not rs_c.eof 
list(0,i)=rs_c(c_id)' load into the array
list(1,i)=rs_c(c_classname) 
list(2,i)=n 
'n=n+1 
i=i+1 
thisid=classarry(rs_c(c_id),1)'The recursive call is called here until the last subclass
rs_c.movenext 
loop 
n=n-1 
rs_c.close 
end function 
public function arrylist()' loop out all root classes
set rs_c=("select count("&c_id&") from "&c_db_name) 
lenght=rs_c(0) 
rs_c.close 
redis list(2, length)'Set the array
set rs1=("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0") 
do while not  
call classarry(rs1(c_id),0) 
'n=1 
 
loop 
 
arrylist=list 
end function 
end class 
%>