ホームページ >バックエンド開発 >PHPチュートリアル >PHPで無限分類実装コード(再帰的手法)を実装_PHPチュートリアル

PHPで無限分類実装コード(再帰的手法)を実装_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:32:48870ブラウズ

以前、分類機能も含めて百科事典を作ったことがあるので、最初は難しそうだと思ったのですが、それは無限分類ではなく、自分で設計した固定の3段階分類のシンプルな実装でした。考えてみると実装方法が大雑把すぎます。実は、3 レベル分類は無限レベル分類の特殊なケースにすぎません。しばらく考えてから、ネットで調べたら、そういうのがたくさんあることが分かりました(笑)。実際、無限ドロップダウン リスト関数は非常に単純で、再帰アルゴリズムを使用するだけです。
まず、データベースを設計する必要があります。分類情報を格納するテーブルを構築する必要があります。最初のフィールドは主キー (ID)、2 番目は親分類 ID (parentid) です。 、3 番目は分類の名前 (クラス名) です。考えられる影響は次のとおりです:
ID PARENTID CLASSNAME
1 0 第 1 レベルの分類 A
2 0 第 1 レベルの分類 B
3 1 第 2 レベルの分類 A
4 1 第 2 レベルの分類 B
主なアイデア: 最初に 3 番目の分類を確認します。 4 行目では、親クラス ID (PARENTID) の値は 1 で、id=1 のクラスのサブクラスに属していることを示しています。ただし、1 行目と 2 行目は第 1 レベルの分類であり、上位の分類がないため、親クラス ID (PARENTID) の値は 0 で、主分類を示し、以下同様に無限分類を実現します。最終的な効果は次のとおりです。
§第 1 レベルの分類 A
§─┴第 2 レベルの分類 A
§─┴第 2 レベルの分類 B
§第 1 レベルの分類 B
そして、記述として PHP が使用されます。ここでの言語は、原理が似ており、単なる再帰であるため、他の言語に簡単に変更できます。

コードをコピーします コードは次のとおりです:

$dbhost = "localhost"; // データベースのホスト名
$dbuser = "root"; // データベースのユーザー名
$; dbpd = "123456 "; // データベースのパスワード
$dbname = "test" // データベース名
mysql_select_db($dbname);データベース
mysql_query(" SET NAMES 'utf8'");
display_tree("§",0);
function display_tree($tag,$classid) {
$result = mysql_query("
SELECT *
ylmf_class
WHERE 親 ID) = '" . $ classid . "'
;"
);
while ($row = mysql_fetch_array($result)) {
// ノード名をインデントします
echo $tag.$ro​​w['classname'] . "< ;br/> ;";
//この関数を再度呼び出して、子ノードの子ノードを表示します
display_tree($tag."─┴",$row['id']);
}
}
?> ;

この再帰的な方法は、多数のサブカラムや一部の成熟した CMS システムにとって負担となります。これらはすべて、呼び出しを容易にするための配列を生成し、効率を大幅に向上させることもできます。

http://www.bkjia.com/PHPjc/322720.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/322720.html技術記事最初は、以前に分類関数を含む百科事典を作成したことがあり、このような関数は難しそうだと思いましたが、それは無限分類ではなく、固定の単純な実装でした...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。