Реферат: Использование рекурсии в PHP

Дроздовский Михаил

Рекурсия— это обращение функции к самой себе.

Многиене понимают, как же использовать рекурсию на практике — мол, «что за бред,функция обращается сама к себе…Этого не должно быть!». Действительно, кажется странновато и неудобно. Нучто же, разберем реальный случай.

Допустим,нам необходимо выстроить дерево записей из базы данных, каждый из которых имеетследующие параметры:

| uid | имя записи | uid родительской записи |

Вроде,все просто — сделал код типа

$s = mysql_query(«SELECT * FROM x_table WHEREparent_id=0», $conn);

while ($z = mysql_fetch_array($s)) {

...

$x = mysql_query(«SELECT * FROM x_table WHEREparent_id=».$z[«uid»], $conn);

while ($f = mysql_fetch_array($x)) {

...

ит.д.

}

}

Новедь количество уровней вложенности может быть неограниченным! Получается,количество циклов будет бесконечным, длина кода будет бесконечной итп. Т.е.сделать ничего не получится. Как же быть.

Некоторыепрограммисты просидят над этой задачей довольно долго. Конечно, можно сделать100 циклов, в надежде, что такой глубокой вложенности записей не будет. А еслибудет? К тому же код с 100 циклами будет плохочитаемым, длинным и оченьобъемным. Ну а если там появится небольшая ошибка… (дальше, я думаю,объяснять не стоит).

-------------------------

Этузадачу достаточно легко решить с помощью рекурсии. Пишем небольшую функцию:

function tree($uid, $conn) {

$sql = «SELECT * FROM x_table WHERE parent_id=$uid»;

$a = mysql_query($sql, $conn);

while($x = mysql_fetch_array($a)) {

…какие-то действия...

tree($x[«uid»], $conn);

}

}

Изапускаем ее: tree(0, $conn). Все. Сложная на вид задача решена.

Эпилог: с подобной задачей автор столкнулся принаписании одного веб-приложения на PHP.

Список литературы

Дляподготовки данной работы были использованы материалы с сайта progcpp.narod.ru/

еще рефераты
Еще работы по информатике, программированию