Callbacks i inbyggda funktioner i PHP
I PHP finns det ett antal inbyggda funktioner
som tar callbacks som parameter.
Vi kommer att studera den allmänna principen för att arbeta med dem
med exemplet funktionen array_map.
Denna funktion tar en callback som första parameter
och en array som den andra. Funktionen applicerar
callbacken på varje element i arrayen
och returnerar den modifierade arrayen.
Låt oss titta på alternativen för att använda denna funktion med hänsyn till de kunskaper vi tidigare har fått.
Alternativ 1
Låt oss extrahera kvadratroten ur
varje element i arrayen med hjälp av den inbyggda
funktionen
sqrt.
För att göra detta skickar vi vi en sträng med namnet på denna funktion som callback-parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Alternativ 2
Låt oss upphöja varje element i arrayen till kvadrat med hjälp av en vanlig funktion som vi skapat. För att göra detta skickar vi en sträng med namnet på denna funktion 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
Låt oss omvandla vår funktion till en anonym funktion, som lagras 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
Låt oss skicka den anonyma funktionen som en parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Alternativ 5
Låt oss använda en arrow function:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Alternativ 6
Låt oss nu säga att exponenten som talet ska
upphöjas till, anges av en extern variabel
till callbacken. Låt oss använda denna variabel
genom att få tillgång till 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
Låt oss skriva om föregående kod med en arrow function.
Nu kommer variabeln $pow
att vara tillgänglig automatiskt:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktiska uppgifter
En array med strängar är given. Översätt texten för varje element i arrayen till versaler.
En array med strängar är given. Vänd på texten för varje element i arrayen så att tecknen kommer i omvänd ordning.