Callbacks dans les fonctions intégrées en PHP
En PHP, il existe un certain nombre de fonctions intégrées
qui acceptent des callbacks en paramètre.
Nous étudierons le principe général de leur fonctionnement
sur l'exemple de la fonction array_map.
Cette fonction prend un callback comme premier paramètre
et un tableau comme second. La fonction applique
le callback à chaque élément du tableau
et retourne le tableau modifié.
Voyons les options d'utilisation de cette fonction en tenant compte des connaissances acquises précédemment.
Option 1
Extrayons la racine carrée de chaque élément du tableau
à l'aide de la fonction intégrée
sqrt.
Pour cela, nous passerons en paramètre comme callback
une chaîne contenant le nom de cette fonction :
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Option 2
Élevons chaque élément du tableau au carré à l'aide d'une fonction ordinaire que nous avons créée. Pour cela, nous passerons en paramètre comme callback une chaîne contenant le nom de cette fonction :
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Option 3
Transformons notre fonction en une fonction anonyme, stockée dans une variable :
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Option 4
Passons la fonction anonyme directement en paramètre :
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Option 5
Utilisons une fonction fléchée :
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Option 6
Supposons maintenant que la puissance à laquelle il faut
élever le nombre soit définie par une variable externe
au callback. Utilisons cette variable
en y accédant 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);
?>
Option 7
Réécrivons le code précédent en utilisant une fonction
fléchée. Désormais, la variable $pow
sera accessible automatiquement :
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Tâches pratiques
Un tableau de chaînes de caractères est donné. Convertissez le texte de chaque élément du tableau en majuscules.
Un tableau de chaînes de caractères est donné. Inversez le texte de chaque élément du tableau de sorte que les caractères soient dans l'ordre inverse.