オブジェクトの配列を出力するSQL接続があり、そのようにソートされています
(
[0] => listItem Object
(
[name] => TV
[parentId] => 0
[id] => 1
[childs] => Array
(
[0] => listItem Object
(
[name] => mini tv
[parentId] => 1
[id] => 29
[childs] => Array
(
[0] => listItem Object
(
[name] => tiny TV
[parentId] => 29
[id] => 548
)
)
)
)
)
[1] => listItem Object
(
[name] => RADIO
[parentId] => 0
[id] => 2
[childs] => Array
(
[0] => listItem Object
(
[name] => mini radio
[parentId] => 2
[id] => 30
)
[1] => listItem Object
(
[name] => Tiny LCD
[parentId] => 2
[id] => 551
)
)
)
[2] => listItem Object
(
[name] => Stereo
[parentId] => 0
[id] => 550
)
[3] => listItem Object
(
[name] => Joe the Plumber
[parentId] => 0
[id] => 568
[childs] => Array
(
[0] => listItem Object
(
[name] => Joe the Plumber
[parentId] => 568
[id] => 569
[childs] => Array
(
[0] => listItem Object
(
[name] => Joe the Plumber
[parentId] => 569
[id] => 570
[childs] => Array
(
[0] => listItem Object
(
[name] => Joe the Plumber
[parentId] => 570
[id] => 571
)
)
)
)
)
)
)
)
適切な階層を持つ として出力したいので、このように並べ替えています。
私はこの機能を持っています
function buildHTML($tree){
echo 'building tree';
foreach($tree as $item){
$topItem = makeHtmlListItem($item);
$pos = strpos($topItem, '</li>');
$newItem = substr($topItem,0 , $pos);
echo $newItem;
foreach($item->childs as $subItem){
echo '<ul>' . makeHtmlListItem($subItem) . '</ul>' ;
}
echo '</li>';
}
}
しかし、それは2番目のレベルにしか到達しません。任意の深さで底に到達するにはどうすればよいですか? 私は再帰でそれを行うことができましたが、今は再帰なしでやりたいと思っています。