0

私はmysqlこのようなテーブル構造を持っています:

CREATE TABLE IF NOT EXISTS menu(
id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_id INT(5), -- parent id
sort_id INT(5) NOT NULL, -- for position
title VARCHAR(50) NOT NULL,
etc ...);

データ構造は次のようになります。

id | p_id | sort_id | title 
1  | NULL |    1    |  root_1
2  |  1   |    1    |  sub1 of root_1
3  |  1   |    2    |  sub2 of root_1
4  | NULL |    2    |  root_2
5  |  2   |    1    |  sub1 of root_2
6  |  2   |    2    |  sub2 of root_2
7  |  3   |    1    |  sub1 of `sub2 of root_1`

1 つのレベルのサブ メニューを表示する php スクリプトを作成しましたが、他のレベルを取得する方法がわかりません。sub1 of sub2 of root_1たとえば、このタスクで要素を取得するには、再帰関数が必要だと思います。

この状況で再帰関数の作成を開始する方法を誰かが知っている場合は、私にアドバイスしてください、ありがとう:)

4

2 に答える 2

0

最初にこれをツリー型構造に変換するのが最善かもしれません:

Menu Top
  |
Nodes with NULL p_id
  |
Children

これを行うには、子の配列を持つ MenuNode クラスを作成します。そのようにする必要はありませんが、メニューを出力するための再帰関数を作成するのがはるかに簡単になります。

于 2012-08-10T19:22:50.827 に答える