国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP中的無限級分類和無限嵌套評論

2020-03-22 18:00:01
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP中的無限級分類和無限嵌套評論,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

 

回顧

上一篇文章我們講到實戰PHP數據結構基礎之遞歸。來回顧下什么是遞歸?

一般來說,遞歸被稱為函數自身的調用。

遞歸在開發中的實際運用N級分類

無限級的分類在平常的開發中是常見的需求,并且在不少面試題中都會碰到。不管你做什么項目,應該都碰到過類似的問題。下面,我們就使用遞歸的思想,實戰一把。

SQL結構

CREATE TABLE `categories` ( `id` int(11) NOT NULL AUTO_INCREMENT, `categoryName` varchar(100) NOT NULL, `parentCategory` int(11) DEFAULT 0 , `sortInd` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

然后我們虛擬出一些數據出來,最后長這個樣子。

1067277681-5b3f6f03c13f1_articlex[1].png

下面 我們直接看代碼實現。

 ?php$dsn = mysql:host=127.0.0.1;port=3306;dbname=light-tips;charset=UTF8; $username = root $password = admin $pdo = new PDO($dsn, $username, $password);$sql = SELECT * FROM `categories` ORDER BY `parentCategory`, `sortInd` $result = $pdo- query($sql, PDO::FETCH_OBJ);$categories = [];foreach ($result as $category) { $categories[$category- parentCategory][] = $category;function showCategoryTree($categories, $n) if (isset($categories[$n])) { foreach ($categories[$n] as $category) { echo str_repeat( - , $n) . $category- categoryName . PHP_EOL; showCategoryTree($categories, $category-  return;showCategoryTree($categories, 0);

可以看到,我們首先獲取到了所有的數據,然后按照父級ID歸類。這是一個非常棒的數據結構。想象一下,我們把展示頂級目錄下所有子目錄的問題分解成了展示自己的類目標題和展示數據中parentCategory為當前目錄id的子目錄,然后使用開始遞歸調用。最后的輸出是這個樣子的。

1120440599-5b3f6f024d406_articlex[1].png

無限嵌套評論

先來看下這個 無限嵌套評論長什么樣子。如圖:

3082497495-5b3f6f026065f_articlex[1].png

上面的栗子,又是一個經典的可以使用遞歸解決的案例。還是來看下數據結構。

CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `comment` varchar(500) NOT NULL, `username` varchar(50) NOT NULL, `datetime` datetime NOT NULL, `parentID` int(11) NOT NULL, `postID` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

大家可以自己實踐一遍,先不要看下面的內容。

 ?php$dsn = mysql:host=127.0.0.1;port=3306;dbname=light-tips;charset=UTF8; $username = root $password = admin $pdo = new PDO($dsn, $username, $password);$sql = SELECT * FROM `comments` WHERE `postID` = :id ORDER BY `parentId`, `datetime` $stmt = $pdo- prepare($sql);$stmt- setFetchMode(PDO::FETCH_OBJ);$stmt- execute([ :id = 1]);$result = $stmt- fetchAll();$comments = [];foreach ($result as $comment) { $comments[$comment- parentID][] = $comment;function showComments(array $comments, $n) if (isset($comments[$n])) { foreach ($comments[$n] as $comment) { echo str_repeat( - , $n) . $comment- comment . PHP_EOL; showComments($comments, $comment-  return;showComments($comments, 0);
文件掃描

使用遞歸進行目錄文件的掃描的栗子。

 ?phpfunction showFiles(string $dir, array $allFiles) $files = scandir($dir); foreach ($files as $key = $html' target='_blank'>value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $allFiles[] = $path; } else if ($value != . $value != .. ) { showFiles($path, $allFiles); $allFiles[] = $path; return;$files = [];showFiles( . , $files);foreach ($files as $file) { echo $file . PHP_EOL;}

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP數據結構基礎之遞歸

使用XHProf分析PHP性能瓶頸的方法二

以上就是PHP中的無限級分類和無限嵌套評論的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖宇县| 青铜峡市| 恭城| 台东县| 潜山县| 合肥市| 体育| 肇东市| 博湖县| 太仓市| 乐清市| 万荣县| 临泽县| 独山县| 铜梁县| 新昌县| 兰州市| 秭归县| 榆树市| 南华县| 正宁县| 泊头市| 建瓯市| 西峡县| 衡阳县| 垦利县| 罗源县| 栾川县| 富源县| 金乡县| 白城市| 交城县| 青海省| 开封市| 芮城县| 石城县| 吉林市| 武强县| 朝阳市| 新宾| 美姑县|