PHP-dä parametrli rekursiýa
Rekursiýa ýardamynda massiwiň elementleriniň yzygiderli çap edilişini göreliň. Massiw başda funksiýanyň parametri hökmünde geçirilsin:
<?php
func([1, 2, 3]);
?>
Ilki bilen rekursiýasyz, array_shift
funksiýasyny ulanyp, massiwiň ähli elementlerini yzygiderli çap edeliň:
<?php
function func($arr) {
var_dump(array_shift($arr)); // 1 çap eder
var_dump($arr); // [2, 3] çap eder - massiw kiçeldi
var_dump(array_shift($arr)); // 2 çap eder
var_dump($arr); // [3] çap eder - massiw kiçeldi
var_dump(array_shift($arr)); // 3 çap eder
var_dump($arr); // [] çap eder - massiw boş
}
func([1, 2, 3]);
?>
Görşüňiz ýaly, array_shift funksiýasy
massiwiň birinji elementini kesip alyp gaýtaryar,
şol bir wagtyň özünde massiw şol element başyna kiçelýär.
Indi rekursiýany ulanyň:
<?php
function func($arr) {
var_dump(array_shift($arr));
var_dump($arr);
if (count($arr) !== 0) {
func($arr);
}
}
func([1, 2, 3]);
?>
Hakykatan hem, massiw elementlerini aýlaw bilen öwürmek has ýeňil. Berlen mysallar diňe rekursiýanyň işini ýönekeý mysallar (gündelik däl) bilen görkezmek üçindir. Rekursiýanyň peýdaly ulanylyşynyň has çylşyrymly mysallary bar, olara töwerekleýin serediş.
Massiwiň özi berlen:
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
?>
Rekursiýa ýardamynda bu massiwiň elementlerini ekrana çap ediň.