Povratni klici v vgrajenih funkcijah v PHP
V PHP obstaja vrsta vgrajenih funkcij,
ki kot parameter sprejemajo povratne klic.
Splošno načelo dela z njimi bomo preučili
na primeru funkcije array_map.
Ta funkcija kot prvi parameter sprejme
povratni klic, kot drugega pa - array. Funkcija uporabi
povratni klic za vsak element array
in vrne spremenjen array.
Poglejmo si možnosti uporabe te funkcije ob upoštevanju prej pridobljenega znanja.
Možnost 1
Izluščimo iz vsakega elementa array
kvadratni koren s pomočjo vgrajene
funkcije
sqrt.
Za to kot povratni klic parameter posredujemo
niz z imenom te funkcije:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Možnost 2
Dvignimo vsak element array na kvadrat s pomočjo ustvarjene navadne funkcije. Za to kot povratni klic parameter posredujemo niz z imenom te funkcije:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Možnost 3
Preoblikujmo našo funkcijo v anonimno, zapisano v spremenljivko:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Možnost 4
Posredujmo anonimno funkcijo kot parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Možnost 5
Uporabimo streličasto funkcijo:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Možnost 6
Naj bo sedaj stopnja, na katero je treba
dvigniti število, podana z zunanjo spremenljivko
povratnega klica. Uporabimo to spremenljivko,
in ji dostopamo preko use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Možnost 7
Prepišimo prejšnjo kodo s streličasto
funkcijo. Sedaj bo spremenljivka $pow
dostopna samodejno:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktične naloge
Dan je array z nizi. Prevedite besedilo vsakega elementa array v velike črke.
Dan je array z nizi. Obrnite besedilo vsakega elementa array tako, da znaki gredo v obratnem vrstnem redu.