再帰関数を作成する場合、以前の実行結果を保存するためにいくつかの静的変数をキャッシュおよび定義することを検討すると、マルチプログラムの実行効率が非常に高まります。一般的な手順は次のとおりです。 まず、データベースからデータを取得します。 、それを配列に入れ、データをツリー状の配列に変換し、最後にこのツリー状の配列を HTML コードに変換します。以下に例を見てみましょう。
私の技術サイトの 1 つは主に記事であり、一部の記事はシリーズになっているため、これらの記事を分類して同じカテゴリに入れたいと考えています。
データベースは適切に設計されています。これは、id と Fatherid を使用して分類するだけです。fatherid は記事の ID であり、レベルは記事の一意の ID ではありません。 2 層または 3 層にすることができます。 Fatherid が 0 の場合は、トップレベルの記事を示します。
php コード、主に再帰的
function category_tree($fatherid){ //require_once("mysql_class/config.inc.php"); //require_once("mysql_class/Database.class.php"); $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE); $db->connect(); $sql = "SELECT id,title,url FROM ".TABLE_TASK." WHERE fatherid=$fatherid and ispublic=1 order by id asc"; $articles = $db->query($sql); $db->close(); while ($record = $db->fetch_array($articles)){ $i = 0; if ($i == 0){ if($fatherid==0){ echo '<ul class="article-list-no-style border-bottom">'; }else{ echo '<ul class="article-list-no-style">'; } } if($fatherid==0){ echo '<li><span class="glyphicon glyphicon-log-in" aria-hidden="true" id="han'.$record['id'].'"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; }else{ echo '<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; } category_tree($record['id']); echo '</li>'; $i++; if ($i > 0){ echo '</ul>'; } } }
呼び出し:
category_tree(0) //先提取最顶层文章
概要: 上記がこの記事の全内容です。学習は誰にとっても役立ちます。
#関連する推奨事項:
#PHP の静的キーワードの定義、遅延バインディング、self キーワードとの違いPHP で foreach() を使用する方法PHP で提供されるマジック メソッドの簡単な説明以上がPHP は再帰に基づいて記事ツリーを生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。