ホームページ  >  記事  >  バックエンド開発  >  再帰的メソッド PHP はコード再帰的メソッドを実装するために無限レベルの分類を実装します

再帰的メソッド PHP はコード再帰的メソッドを実装するために無限レベルの分類を実装します

WBOY
WBOYオリジナル
2016-07-29 08:44:10983ブラウズ

以前、分類機能も含めて百科事典を作ったことがあるので、最初は難しそうだと思ったのですが、それは無限分類ではなく、自分で設計した固定の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 システムにとって負担となります。これらはすべて、呼び出しを容易にするための配列を生成し、効率を大幅に向上させることもできます。
上記では、無限分類を実装するための PHP の再帰メソッドと再帰メソッドのコードを紹介しました。再帰メソッドの内容も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。