Klasifikasi senarai juntai bawah klasifikasi infinite PHP (Bahagian 1)
Skema pelaksanaan
Klasifikasi tahap tak terhingga senarai juntai
<?php include ("conn.php"); function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space); } return $result; } $rs=getList(); function displayCate($pid=0,$selected=1){ $rs=getList($pid); $str=''; $str.="<select name='cate'>"; foreach ($rs as $key=>$val){ $selectedstr=''; if ($val['id'] == $selected){ $selectedstr="selected"; } $str.="<option{$selectedstr}>{$val['catename']}</option>"; } return $str.='</select>'; } echo displayCate(0,2); ?>
Contohnya ialah pengelasan tahap tak terhingga Di bawah kami akan menerangkan kod dalam bahagian.
Penjelasan kod:
<?php include ("conn.php"); function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space); } return $result; } $rs=getList(); ?>
function getList($pid=0){ } ?>
Mula-mula takrifkan fungsi, dengan pid sebagai ID kelas induk, ditakrifkan sebagai 0.
$sql="SELECT*FROM deepcate WHERE pid = $pid";
Gunakan pernyataan sql untuk menanyakan subkelas permukaan pemilihan pid.
$res = mysql_query($sql); //执行sql语句 $result=array(); while ($row = mysql_fetch_assoc($res)){ $result[]=$row; } return $result;
Masukkan hasil ke dalam tatasusunan dan kembalikan kepada hasil.
Rekursi ialah teknik untuk fungsi memanggil dirinya sendiri apabila menanyakan subkelas, kita perlu memanggil getList($row['id']);
ID bagi. subkelas mestilah Sebagai ID peringkat seterusnya, kita perlu membawa masuk $row['id'])
Kod pada masa ini ialah
<?php function getList($pid=0){ $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); $result=array(); while ($row = mysql_fetch_assoc($res)){ $result[]=$row; } return $result; } ?>
Operasi rekursif perlu mengembalikan tatasusunan, kami menggunakan Kaedah rujukan, buat perubahan pada kod
<?php include ("conn.php"); function getList($pid=0,&$result=array()){ $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $result[]=$row; getList($row['id'],$result); } return $result; } ?>
Seterusnya, cantikkan gaya klasifikasi
<?php include ("conn.php"); function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space); } return $result; } $rs=getList(); print_r($rs); ?>
Cetaknya untuk pemerhatian.
Isi utama bab ini
Pelaksanaan rekursif klasifikasi tahap tak terhingga ialah menggunakan rekursi untuk mencari nod induk dan menjana salasilah keluarga.
Subkelas dan kelas induk.