Callbacks i innebygde funksjoner i PHP
I PHP finnes det en rekke innebygde funksjoner
som tar imot callbacks som parameter.
Vi vil studere den generelle prinsippet for arbeid med dem
ved å bruke funksjonen array_map som eksempel.
Denne funksjonen tar imot en callback som første parameter,
og en array som andre parameter. Funksjonen bruker
callbacken på hvert element i arrayen
og returnerer den modifiserte arrayen.
La oss se på alternativer for bruk av denne funksjonen med hensyn til kunnskapen vi har fått tidligere.
Alternativ 1
La oss trekke ut kvadratroten fra hvert element i arrayen
ved hjelp av den innebygde funksjonen
sqrt.
For å gjøre dette, sender vi inn
en streng med navnet på denne funksjonen som callback-parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Alternativ 2
La oss opphøye hvert element i arrayen i andre potens ved hjelp av en vanlig funksjon vi har opprettet. For å gjøre dette, sender vi inn en streng med navnet på denne funksjonen som callback-parameter:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Alternativ 3
La oss endre funksjonen vår til en anonym funksjon, som er lagret i en variabel:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Alternativ 4
La oss sende den anonyme funksjonen som en parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Alternativ 5
La oss bruke en pilfunksjon:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Alternativ 6
La oss nå si at potensen som tallet skal
opphøyes i, er gitt av en ekstern variabel
for callbacken. La oss bruke denne variabelen
ved å få tilgang til den via use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Alternativ 7
La oss omskrive forrige kode ved å bruke en pilfunksjon.
Nå vil variabelen $pow
være tilgjengelig automatisk:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktiske oppgaver
Det er gitt en array med strenger. Oversett teksten i hvert element i arrayen til store bokstaver.
Det er gitt en array med strenger. Snur teksten i hvert element i arrayen slik at tegnene står i omvendt rekkefølge.