Klasifikasi senarai juntai bawah klasifikasi infinite PHP (Bahagian 1)

Skema pelaksanaan

递归.png

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('&nbsp;',$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('&nbsp;',$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('&nbsp;',$space).'|--|'.$row['catename'];
       $result[]=$row;
       getList($row['id'],$result,$space);
   }
   return $result;
}
$rs=getList();
print_r($rs);
?>

Cetaknya untuk pemerhatian.


Isi utama bab ini

  1. Pelaksanaan rekursif klasifikasi tahap tak terhingga ialah menggunakan rekursi untuk mencari nod induk dan menjana salasilah keluarga.

  2. Subkelas dan kelas induk.

Meneruskan pembelajaran
||
<?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); ?>
  • Cadangan kursus
  • Muat turun perisian kursus