これについて他の質問を見たことがありますが、私の状況はあまり好きではありません。MySQL に次のテーブルがあります。
term_id name slug taxonomy parent
1 Entry Form entry-form format 0
2 Page page format 3
3 Facebook facebook format 0
4 Entry Form facebook-entry-form format 3
5 Twitter twitter format 0
6 Single single format 2
次の OBJECT クエリがあります。
$formats = $wpdb->get_results($wpdb->prepare("
SELECT * FROM table t
WHERE t.taxonomy = 'format'
"));
私は次の配列で終わります:
Array ( [0] => stdClass Object ( [term_id] => 1 [name] => Entry Form [slug] => entry-form [taxonomy] => format [parent] => 0 ) [2] => stdClass Object ( [term_id] => 2 [name] => Page [slug] => page [taxonomy] => format [parent] => 3 ) [3] => stdClass Object ( [term_id] => 3 [name] => Facebook [slug] => facebook [taxonomy] => format [parent] => 0 ) [4] => stdClass Object ( [term_id] => 4 [name] => Entry Form [slug] => entry-form-facebook [taxonomy] => format [parent] => 3 ) [5] => stdClass Object ( [term_id] => 5 [name] => Twitter [slug] => twitter [taxonomy] => format [parent] => 0 ) [6] => stdClass Object ( [term_id] => 6 [name] => Single [slug] => single [taxonomy] => format [parent] => 2 ) ) 1
上記のすべてを、次のような出力の階層リストに変換する必要があります。
Entry Form
Twitter
Facebook
- Entry Form
- Page
-- Single
そのため、配列 $formats を親フィールドに基づいて階層配列に変換する必要があります。0 の親は、それがトップ レベルのアイテムであることを意味します。そのため、Single には 2 の親があるため、Page の子であり、Page は 3 の親を持ち、Facebook の子です。
配列を階層配列に変換して、それをループして出力する方法を教えてくれる人はいますか?