Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in den Bild- und Textcode der unbegrenzten PHP-Klassifizierung

Einführung in den Bild- und Textcode der unbegrenzten PHP-Klassifizierung

黄舟
黄舟Original
2017-08-10 11:18:501304Durchsuche

Unendliche Klassifizierung bedeutet, dass jede Unterkategorie ausgehend von der höchsten Klassifizierung in mehrere eigene Unterkategorien unterteilt werden kann, was als unendliche Klassifizierung bezeichnet wird

Zum Beispiel beginnt ein Baum mit einem Stamm und verzweigt sich in mehrere Zweige, und diese Zweige verzweigen sich in weitere Zweige.

Ein anderes Beispiel: Eine Familie kann bestehen Bei mehreren Kindern handelt es sich um Kinder der ersten Stufe. Und diese Kinder werden ihre eigenen Familien gründen, es wird eine Klassifizierung der zweiten Ebene sein. Wenn jede Familie mehr als ein Kind hat, kann sie theoretisch unendlich aufgeteilt werden. Der Ausdruck der unendlichen Klassifizierung ist in der folgenden Abbildung dargestellt.

Einführung in den Bild- und Textcode der unbegrenzten PHP-KlassifizierungWir verwenden die beiden Felder id und pid, um die übergeordnete Klassifizierung und die Teilmengenklassifizierung zu verbinden Finden Sie die Vorfahren und ihre Nachkommen einer bestimmten Klassifizierungsstufe, zum Beispiel Top-Klassifizierung>Chinesischer Sänger>Popsänger>Popmännlicher Sänger>Jay Chou;

Nur ​​Daten zu erstellen reicht nicht aus, wir müssen sie auch anzeigen Für die Daten müssen wir zu diesem Zeitpunkt den rekursiven Algorithmus der unendlichen Klassifizierung verwenden.

Hier erklären wir zunächst, was Rekursion ist eine Programmiertechnik, bei der sich eine Funktion selbst aufruft, um den Zweck einer Schleife zu erreichen. Die Frage ist also: Warum verwenden wir nicht einfach eine Schleife? Wenn wir Schleifen direkt verwenden, können wir das Parameterproblem nicht sehr gut lösen. Insbesondere bei der Bearbeitung einiger komplexer Probleme sind zusätzliche Überlegungen erforderlich, wann Parameter initialisiert und wann Parameter akkumuliert werden sollen. Nicht so klar wie Rekursion.

Sehen Sie sich ein einfaches Rekursionsbeispiel an;

Rekursion ist eine Variation einer Schleife, daher sind auch Bedingungen erforderlich, um aus der Schleife auszubrechen, oder Bedingungen, um die Schleife fortzusetzen. Das &$b hier ist eine Art der Parameterübergabe, die sich auf den Referenzparameter selbst bezieht. Die durch & übergebenen Parameter werden weiterhin akkumuliert.
function test(&$b=0){
    $b++;    if($b<10){
        test($b);
    }    return $b;
}echo test();

Zurück zur vorherigen Klassifizierung:

Der laufende Prozess dieser Funktion ist:
$host=&#39;127.0.0.1&#39;;
$db_user=&#39;root&#39;;
$db_pass=&#39;root&#39;;
$db_name=&#39;chenbk&#39;;
$timezone="Asia/Shanghai";
$link=mysqli_connect($host,$db_user,$db_pass,$db_name);
mysqli_query($link,"SET names UTF8");
header("Content-Type: text/html; charset=utf-8");

function tree($link,&$treeList=array(),$pid = 1,$count = 0) {  //$link为数据库连接,&$treeList为输出数组,因为需要累积结果,所以加上引用
    $count+=2;    //count为识别分级深度的标识
    $result = mysqli_query($link,"SELECT * FROM chen_category WHERE parentId={$pid}");
    while ($row=mysqli_fetch_assoc($result)) {
            $row[&#39;count&#39;] = $count;
            $row[&#39;name&#39;] = str_repeat(&#39; &#39;, $count).&#39;|-&#39;.$row[&#39;name&#39;];  //通过分级深度的标识,来给分类缩进效果
            $treeList[] = $row;   //把查询到的结果存储起来                         
            tree($link,$treeList,$row[&#39;id&#39;],$count);  //再次调用自身,这时的pid为上一条数据的id从而找到上一条数据的子分类;
    }
    return $treeList;    //输出结果
}

$values=tree($link);
echo &#39;<select name="parentId" id="">&#39;;

foreach ($values as $key => $value) {
    echo &#39;<option value="&#39;.$value[&#39;id&#39;].&#39;">&#39;.$value[&#39;name&#39;].&#39;</option>&#39;;
}

echo &#39;</select>&#39;;

1. Finden Sie die höchste Kategorie durch pid=0

2. Fügen Sie die Ebenentiefe hinzu, fügen Sie den Einrückungseffekt durch die Ebenentiefe hinzu und Fügen Sie dann dies hinzu. Speichern Sie die Daten.

3. Rufen Sie sich selbst erneut auf und übergeben Sie die in 2. gefundenen Daten und die ID der Kategorie der ersten Ebene auf diese Weise, jedes Mal, wenn wir ihre Unterkategorie finden. Wir werden endlich die kleinste Klassifizierung der ersten Ebene finden.

Der endgültige Effekt ist wie folgt:

Einführung in den Bild- und Textcode der unbegrenzten PHP-KlassifizierungIch habe den Standardwert von pid hier auf 1 gesetzt. also die höchste Die Klassifizierung wird nicht angezeigt.

Der Sortiereffekt dieses Algorithmus liegt in der Wilhe-Schleife. Als wir die Funktion selbst aufriefen, waren die ersten Daten, die wir gefunden haben, einer für einen Chinesen Sänger und einer für einen europäischen und amerikanischen Sänger. Während des Betriebs wird die Funktion jedoch hierarchisch aufgerufen, genau wie eine mehrschichtige for-Schleife. Sie wartet, bis die innerste Schleife endet, bevor die äußeren Schleifen nacheinander abgeschlossen werden. Als wir also die chinesische Sängerin fanden, endete die Rekursion selbst nicht mit der Entdeckung der Popsängerin. Erst als wir Jay Chou fanden, begannen wir, die Popsängerin auf der oberen Ebene zu verarbeiten. Basierend auf den Ergebnissen dieses Prozesses wird die Sortierung abgeschlossen.

Das obige ist der detaillierte Inhalt vonEinführung in den Bild- und Textcode der unbegrenzten PHP-Klassifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn