Рекурсияро дар PHP кор кардан
Дар барномасозӣ чунин мафҳуме вуҷуд дорад, ки
рекурсия - ин вақтест, ки функсия
худро даъват мекунад. Биёед мислан назар кунем.
Бо ёрии рекурсия рақамҳоро аз 1
то 10 чоп кунем:
<?php
$i = 1;
function func()
{
global $i;
echo $i;
$i++;
if ($i <= 10){
func(); // дар инҷо функсия худро даъват мекунад
}
}
func();
?>
Биёед баҳс кунем, ки ин код чӣ гуна кор мекунад.
Мо тағйирёбандаи глобалӣ $i
ва функсияи func дорем, ки дар дохили он ба консоль
мазмуни тағйирёбандаи $i чоп мешавад,
ва сипас ++ иҷро мешавад.
Агар тағйирёбандаи мо $i хурдтар аз ё
ба 10 баробар бошад, он гоҳ функсия бори дигар даъват мешавад.
Зеро тағйирёбандаи $i - глобалӣ аст,
ҳар дафъае, ки функсияи нав даъват шавад, дар он
қимати таъиншудаи тағйирёбандаи $i аз даъвати қаблӣ вуҷуд хоҳад дошт.
Ин бурда мебарояд, ки функсия худро то он даме даъват мекунад,
ки $i аз 10 зиёд нашавад.
Дар назар доред, ки дар ҳолати мо функсияро
бе if оғоз кардан мумкин нест - агар ин кор анҷом дода шавад,
он гоҳ даъвати беохири функсияҳо ҳосил мешавад.