親子カテゴリリストの作成方法を学んでいます。すばらしいチュートリアルを見つけて、次のコードを実装しました。
while($row = $tree_sth->fetch()){
$rows[$row['id']] = array('name'=>$row['name'], 'on'=>$row['on'], 'parent'=>$row['parent']);
}
function btree($parent){
$has_childs = false;
global $rows;
foreach ($rows as $key => $value){
if($value['parent'] == $parent){
if ($has_childs === false){
$has_childs = true;
echo '<ul>';
}
echo '<li>'.$value['name'];
btree($key);
echo '</li>';
}
}
if($has_childs === true){
echo'</ul>';
}
}
私が理解するのに苦労しているのは、foreach関数と再帰関数がPHPによってどのように処理されるかです。
これにより、複数の「インスタンス」が発生するようです。関数とforeachループを同時に実行する方法...それは正しいですか?
これが起こっているのであれば、私のリストが大きくなり、子の関係が深くなるにつれて、これは遅くなる可能性があります。これは本当ですか?