PHP atpakaļizsaukuma funkcijas
Atpakaļizsaukums ir funkcija, kas tiek nodota kā parametrs citai funkcijai.
Apskatīsim piemēru. Pieņemsim, ka mums ir funkcija, kas pirmais parametrs pieņem skaitli, bet otrais parametrs - atpakaļizsaukumu:
<?php
function func($num, $calb)
{
}
?>
Izpildīsim tā, lai funkcijas iekšienē mūsu atpakaļizsaukums tiktu izsaukts ar nodoto skaitli:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Tagad apskatīsim, kādi ir varianti, kā nodot atpakaļizsaukumu mūsu funkcijā.
1. variants
Mūsu atpakaļizsaukums var būt parasta funkcija:
<?php
function calb($num) {
return $num ** 2;
}
?>
Šajā gadījumā kā atpakaļizsaukumu mēs nododam mūsu funkcijas nosaukumu:
<?php
func(3, 'calb');
?>
Funkcijas func iekšienē mūsu
atpakaļizsaukums tiks izsaukts pēc nosaukuma.
2. variants
Mūsu atpakaļizsaukums var būt anonīma funkcija, ierakstīta mainīgajā:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Šajā gadījumā mēs kā parametru nododam mainīgo ar mūsu funkciju:
<?php
func(3, $calb);
?>
3. variants
Var nodot anonīmo funkciju uzreiz kā parametru:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
4. variants
Var saīsināt kodu, izmantojot arrow funkciju:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktiskie uzdevumi
Dota funkcija, kas parametru pieņem massīvu un atpakaļizsaukumu, kas tiks piemērots katram massīva elementam:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Izsauciet šo funkciju, kā parametru nododot massīvu ar skaitļiem un atpakaļizsaukumu, kas paceļ nodoto skaitli kvadrātā.