Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie ein unbegrenztes Baummenü mit PHP

Erstellen Sie ein unbegrenztes Baummenü mit PHP

不言
不言Original
2018-06-08 17:05:121283Durchsuche

Dieser Artikel stellt hauptsächlich PHP zum Erstellen unendlicher Baummenüs vor. Interessierte Freunde können sich auf das Schreiben rekursiver Funktionen beziehen und einige statische Funktionen zum Speichern verwenden die Ergebnisse des vorherigen Laufs, was für die Effizienz bei der Ausführung mehrerer Programme sehr hilfreich ist.


Die ungefähren Schritte sind wie folgt:Schritt 1:
Holen Sie sich die Daten aus der Datenbank und fügen Sie sie in ein Array ein, Schritt2:
Konvertieren Sie die Daten in ein baumförmiges Array, Schritt3:
Konvertieren Sie dieses baumförmige Array in HTML-Code. Sie können den zweiten und dritten Schritt auch zu einem Schritt kombinieren. Details sind wie folgt:

1. Datenbankdesign:

CREATE TABLE `bg_cate` (
`cate_Id` int(30) unsigned NOT NULL AUTO_INCREMENT,
`cate_ParentId` int(30) unsigned DEFAULT '0',
`cate_Name` varchar(100) NOT NULL,
`cate_Intro` varchar(500) DEFAULT NULL,
`cate_Order` int(30) unsigned DEFAULT '0',
`cate_Icon` varchar(100) DEFAULT NULL,
PRIMARY KEY (`cate_Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;
--
-- 导出表中的数据 `bg_cate`
--
INSERT INTO `bg_cate` (`cate_Id`, `cate_ParentId`, `cate_Name`, `cate_Intro`, `cate_Order`, `cate_Icon`) VALUES
(4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),
(5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),
(2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),
(3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),
(6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),
(7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),
(8, 2, 'html', 'html学习', 0, 'icons/1.gif'),
(9, 2, 'css', 'css学习', 0, 'icons/1.gif'),
(10, 2, 'php', 'php学习', 0, 'icons/18.gif'),
(11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),
(12, 10, 'oop', 'oop', 0, 'icons/1.gif'),
(13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),
(14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),
(15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),
(16, 2, '设计模式', NULL, 0, 'icons/1.gif'),
(17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),
(18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif'),
(19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),
(20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),
(21, 19, '学习', '学习', 0, 'icons/1.gif'),
(22, 19, '运动', '运动', 0, 'icons/16.gif'),
(23, 19, '旅游', '旅游', 0, 'icons/24.gif'),
(24, 22, '排球', '排球', 0, 'icons/9.gif'),
(25, 22, '篮球', '篮球', 0, 'icons/9.gif'),
(26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),
(27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');

Los in die Datenbank zum Abrufen. Legen Sie die Daten in ein Array:


require_once './classes/MyDB.php';
$con = MyDB::singleton();
$sql = <<<SQL
 select * from bg_cate cate
SQL;
$data = $con->getAll($sql);
//print_r($data);

Ich verwende die Pear-Klassenbibliothek für Datenbankoperationen. Die endgültigen Daten Das Format von $data lautet wie folgt:


Array
(
 [0] => Array
 (
 [cate_Id] => 4
 [cate_ParentId] => 0
 [cate_Name] => 往事如风
 [cate_Intro] => 记录往事
 [cate_Order] => 0
 [cate_Icon] => icons/6.gif
 )
 [1] => Array
 (
 [cate_Id] => 5
 [cate_ParentId] => 0
 [cate_Name] => 水煮三国
 [cate_Intro] => 品位三国智慧
 [cate_Order] => 0
 [cate_Icon] => icons/3.gif
 )

3. Der Code zum Konvertieren der Daten im vorherigen Schritt in eine Baumform Das Array lautet wie folgt:


function getTree($data, $pId)
{
$tree = &#39;&#39;;
foreach($data as $k => $v)
{
 if($v[&#39;cate_ParentId&#39;] == $pId)
 { //父亲找到儿子
 $v[&#39;cate_ParentId&#39;] = getTree($data, $v[&#39;cate_Id&#39;]);
 $tree[] = $v;
 //unset($data[$k]);
 }
}
return $tree;
}
$tree = getTree($data, 0);

Das endgültige Ausgabedatenformat von $tree ist:


Array
(
 [0] => Array
 (
 [cate_Id] => 4
 [cate_ParentId] =>
 [cate_Name] => 往事如风
 [cate_Intro] => 记录往事
 [cate_Order] => 0
 [cate_Icon] => icons/6.gif
 )
 [1] => Array
 (
 [cate_Id] => 5
 [cate_ParentId] =>
 [cate_Name] => 水煮三国
 [cate_Intro] => 品位三国智慧
 [cate_Order] => 0
 [cate_Icon] => icons/3.gif
 )
 [2] => Array
 (
 [cate_Id] => 2
 [cate_ParentId] => Array
 (
  [0] => Array
  (
  [cate_Id] => 8
  [cate_ParentId] =>
  [cate_Name] => html
  [cate_Intro] => html学习
  [cate_Order] => 0
  [cate_Icon] => icons/1.gif
  )

4. Konvertieren Sie das Baumarray wie folgt in HTML-Code:


function procHtml($tree)
{
$html = &#39;&#39;;
foreach($tree as $t)
{
 if($t[&#39;cate_ParentId&#39;] == &#39;&#39;)
 {
 $html .= "<li>{$t[&#39;cate_Name&#39;]}</li>";
 }
 else
 {
 $html .= "<li>".$t[&#39;cate_Name&#39;];
 $html .= procHtml($t[&#39;cate_ParentId&#39;]);
 $html = $html."</li>";
 }
}
return $html ? &#39;<ul>&#39;.$html.&#39;</ul>&#39; : $html ;
}
echo procHtml($tree);
输出的html的代码格式为:
<ul>
<li>往事如风</li>
<li>水煮三国</li>
<li>技术学习
 <ul>
 <li>html</li>
 <li>css</li>
 <li>php
 <ul>
 <li>php基础知识</li>
 <li>oop</li>
 <li>php安全</li>

5. Sie können auch den 3. und den Code in Schritt 4 zusammensetzen, der Code lautet wie folgt:


function getTree($data, $pId)
{
$html = &#39;&#39;;
foreach($data as $k => $v)
{
 if($v[&#39;cate_ParentId&#39;] == $pId)
 { //父亲找到儿子
 $html .= "<li>".$v[&#39;cate_Name&#39;];
 $html .= getTree($data, $v[&#39;cate_Id&#39;]);
 $html = $html."</li>";
 }
}
return $html ? &#39;<ul>&#39;.$html.&#39;</ul>&#39; : $html ;
}
echo getTree($data, 0);

6. Fügen Sie abschließend einen CSS-Stil hinzu. Der Effekt ist wie folgt:

Der gesamte Prozess ist sehr klar und eignet sich sehr gut für Freunde, die unendlich viele Baumtypen erstellen Ich hoffe, dass jeder etwas gewinnen kann.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Prinzipien und Implementierung der Bilderkennungstechnologie in PHP


PHP verwendet get, um chinesische URL-Schriftzeichen zu erhalten , was zu verstümmelten Zeichen führt. Lösung

Das obige ist der detaillierte Inhalt vonErstellen Sie ein unbegrenztes Baummenü mit PHP. 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