Iebūvēto funkciju atsauces izsaukumi PHP
PHP ir vairākas iebūvētas funkcijas,
kas kā parametru pieņem atsauces izsaukumus.
Vispārējo darbības principu ar tām mēs izpētīsim
ar funkcijas array_map piemēru.
Šī funkcija kā pirmo parametru pieņem
atsauces izsaukumu, bet kā otro - masīvu. Funkcija piemēro
atsauces izsaukumu katram masīva elementam
un atgriež modificēto masīvu.
Apskatīsim šīs funkcijas izmantošanas variantus, ņemot vērā mūsu iepriekš iegūtās zināšanas.
Variants 1
Iegūsim no katra masīva elementa
kvadrātsakni, izmantojot iebūvēto
funkciju
sqrt.
Lai to izdarītu, kā atsauces izsaukumu parametrā nodosim
virkni ar šīs funkcijas nosaukumu:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Variants 2
Kāpināsim katru masīva elementu kvadrātā, izmantojot mūsu izveidoto parasto funkciju. Lai to izdarītu, kā atsauces izsaukumu parametrā nodosim virkni ar šīs funkcijas nosaukumu:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Variants 3
Pārveidosim mūsu funkciju par anonīmu funkciju, ierakstītu mainīgajā:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Variants 4
Nodosim anonīmo funkciju kā parametru:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Variants 5
Izmantosim bultiņu funkciju:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Variants 6
Lai tagad pakāpe, kurā jākāpina skaitlis,
tiktu norādīta ar atsauces izsaukuma ārējo mainīgo.
Izmantosim šo mainīgo,
iegūstot piekļuvi tam caur use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Variants 7
Pārrakstīsim iepriekšējo kodu, izmantojot bultiņu
funkciju. Tagad mainīgais $pow
būs pieejams automātiski:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktiskie uzdevumi
Dots masīvs ar virknēm. Pārveidojiet katra elementa tekstu augšējā reģistrā.
Dots masīvs ar virknēm. Apgrieziet katra elementa tekstu otrādi, lai rakstzīmes ietu apgrieztā secībā.