Tagasikutset PHP sisseehitatud funktsioonides
PHP-s on mitmeid sisseehitatud funktsioone,
mis parameetrina võtavad vastu tagasikutseid.
Nende üldist tööpõhimõtet uurime
funktsiooni array_map näitel.
See funktsioon võtab esimese parameetrina vastu
tagasikutse ja teise parameetrina - massiivi. Funktsioon rakendab
tagasikutset iga massiivi elemendi kohta
ja tagastab muudetud massiivi.
Vaatame selle funktsiooni kasutamise võimalusi võttes arvesse varasematel aegadel saadud teadmisi.
Variant 1
Võtame igast massiivi elemendist
ruutjuure, kasutades selleks sisseehitatud
funktsiooni
sqrt.
Selleks edastame parameetrina tagasikutse stringina
selle funktsiooni nimega:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Variant 2
Tõstame iga massiivi elemendi ruutu meie poolt loodud tavalise funktsiooni abil. Selleks edastame parameetrina tagasikutse stringina selle funktsiooni nimega:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Variant 3
Muudame oma funktsiooni anonüümseks, kirjutades selle muutujasse:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Variant 4
Edastame anonüümse funktsiooni parameetrina:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Variant 5
Kasutame noolfunktsiooni:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Variant 6
Olgu nüüd aste, millesse tuleb
arv tõsta, määratud tagasikutse välimise muutujaga.
Kasutame seda muutujat,
saades sellele juurdepääsu läbi use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Variant 7
Kirjutame eelmise koodi ümber noolfunktsiooni abil.
Nüüd on muutuja $pow
automaatselt kättesaadav:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktilised ülesanded
Antud on stringide massiiv. Teisendage iga massiivi elemendi tekst suurte tähtedega.
Antud on stringide massiiv. Pöörake iga massiivi elemendi tekst ümber nii, et sümbolid läheksid vastupidises järjekorras.