Gość
14.09.2008, 10:12:26
Witam, muszę napisać funkcję rekurencyjną która pobierze mi całe drzewo kategorii z bazy. Napisałem, ale działa źle tzn. podkategorie pojawiają się tam gdzie nie powinny

Może mi ktoś pokazać jak powinna wyglądać taka funkcja? W bazie mam pola: id, parent_id i name.
Dziękuję
Black-Berry
14.09.2008, 10:48:01
<?php
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
// used to display a nice indented tree
function display_children($parent, $level) {
// retrieve all children of $parent
'WHERE parent="'.$parent.'";');
// display each child
// indent and display the title of this child
// call this function again to display this
// child's children
display_children($row['title'], $level+1);
}
}
?>
Czadus
19.09.2008, 16:26:43
Witam. Korzystając z okazji, aby nie zakładać nowego tematu, zapytam odnośnie ryzyka wykorzystywania funkcji rekurencyjnych w php. Czytałem bowiem w internecie następujące zdanie: "Należy jednak unikać rekurencyjnych wywołań funkcji lub metod o głębokości większej niż 100-200 poziomów, gdyż może to zniszczyć stos i spowodować przerwanie działania skryptu.". I moje pytanie na ile jest to niebezpieczne i na ile poważne. bardziej chodzi mi o to, czy trzeba do tego poważnie podejść, czy może poprawność działania kodu jest mimo wszystko bezpieczna??
Black-Berry
19.09.2008, 16:29:45
funkcje rekurencyjne wogóle nie powinny być nigdzie stosowane. Świadczą o lenistwie programisty. Każdą funkcję rekurencyjną można przerobić na nie-rekurencyjną.