0

私はそのようなデータのテーブルを持っています:

id   |   item   |   parent_id
1       item 1          0
2       item 2          0
3       item 3          2
4       item 4          3
5       item 5          1
...

id自動インクリメントで、は左側のparent_idを反映しています。id以前にこのようなデータベース テーブルの設計に出くわしたことがあるかもしれません。

parent_idご覧のとおり、シーケンシャルではありません。

このテーブル データを、すべての親が潜在的な見出しになり、その下に子が存在する形式の配列に取得する必要があります。

だから私はこのような構造を見ています:

Item 1
    Item 5
Item 2
    Item 3
        Item 4
etc

PHP上記を表示できる配列構造が必要です。しかし、私は深刻な脳のおならを抱えています!

誰でも配列構造を手伝ってもらえますか?

4

2 に答える 2

0

次のように書くことができます。

$a = Array(item1 => Array(item5), item2 => Array(item3 => Array(item4)))

また

$a = Array(item1 => parentid, item2 => parentid2 ....)

最初の例では、1 つの項目が配列に格納されているすべての ist 子のキーであり、もう 1 つの例では、すべての項目が item キーと int 値を使用して格納されています。この int 値は、親アイテムのキーです。どの方法を使用するかは、この配列で何をしたいかによって異なります。私のアイデアはどちらもあなたのニーズには十分ではないかもしれません. その場合は、必要なものを教えてください。

于 2013-10-31T21:11:55.817 に答える
0

まず第一に、これを読むことをお勧めします。これは階層構造化データに非常に役立ち、親、子などを取得するのに役立つクエリが利用可能です...などなど。

あなたの質問に答えるために、これを試してください:

$result = array();

while($data = mysql_fetch_assoc($query)) {
    $id = $data['id'];
    $parent = $data['parent_id'];
    $keys = array_keys($result);
    if(in_array($parent, $keys)) {
        $result[$parent] = array_merge($result[$parent], array($id => $data['item']));
    } else {
        $result = array_merge($result, array($id => $data['item']));
    }
}
于 2013-10-31T21:21:29.050 に答える