数据库无限分类如何用跟类别ID获取该类别下面的全部子类别商品,上表结构
cat_id cat_name pid cat_pat
类别ID(自增) 类别名称 0(父Id,若为0则是根类别,为自增ID) 路径
请问各位大神,能不能给出最好的方法,直接用跟类别ID 1 查询出下面的所有子类别
数据表如下:
id cat_name pid cat_path
1 手机 0 ,
2 智能手机 1 ,1,
3 三星 2 ,1,2,
4 三星S系列 3 ,1,2,3,
5 三星M系列 3 ,1,2,3,
回复内容:
cat_id cat_name pid cat_pat
类别ID(自增) 类别名称 0(父Id,若为0则是根类别,为自增ID) 路径
请问各位大神,能不能给出最好的方法,直接用跟类别ID 1 查询出下面的所有子类别
数据表如下:
id cat_name pid cat_path
1 手机 0 ,
2 智能手机 1 ,1,
3 三星 2 ,1,2,
4 三星S系列 3 ,1,2,3,
5 三星M系列 3 ,1,2,3,
这没人回答,有前不久做了相关的工作,把算法给你吧。
思路如下:用一个堆栈来临时保存未处理根节点以及所有其的子节点,不断从堆栈中取一个节点输入,并把其直接子节点,压入堆栈,直到堆栈为空,算法结束。
我已经为你重写了详细的注释,看懂应该不成问题了!
<code> $waitList = array(); //等待堆栈(数组用做堆栈),未处理的id array_push($waitList, $_GET["cid"]); //我这是点中某个节点(cid),列出所有子类中的数据 $rsList = array(); //结果队列 while (count($waitList) > 0) { //等待堆栈中还有节点,继续处理 $tmp = array_pop($waitList); //取出一个节点 array_push($rsList, $tmp); //输出这个节点 $dc = M("DocCategory"); //从数据表中找出这个节点的所有子节点 $dcon['pid'] = $tmp; $dcs = $dc->where($dcon)->field('id')->select(); foreach ($dcs as $value) { //将所有子节点压入等待堆栈 array_push($waitList, $value['id']); } } $con['category'] = array('in', $rsList); //生成查询条件,等待队列中已经包含了所有的子节点 </code>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
