Utilisation de variables calculées en dehors des fonctions de rappel
En PHP, il est possible de calculer des variables en dehors des fonctions de rappel et de les utiliser dans ces fonctions. Considérons le scénario suivant :
Vous disposez d'un tableau $arr et souhaitez utiliser array_filter pour créer un nouveau tableau contenant uniquement des valeurs inférieures à la moyenne des éléments de $arr.
Pour y parvenir Ceci en utilisant une fonction de rappel, vous pourriez rencontrer le défi de calculer la moyenne en dehors de la fonction et de l'utiliser à l'intérieur. Cependant, le mot-clé use fournit une solution.
Utilisation du mot-clé use
Le mot-clé use permet aux fonctions anonymes d'hériter des variables de la portée parent. Dans ce cas, vous pouvez définir la fonction de rappel comme suit :
$avg = array_sum($arr) / count($arr); $callback = function($val) use ($avg) { return $val < $avg; };
Ici, $avg est hérité de la portée parent à l'aide du mot-clé use. La fonction de rappel peut désormais utiliser $avg pour filtrer les éléments.
return array_filter($arr, $callback);
Utilisation des fonctions fléchées (PHP 7.4 ou version ultérieure)
PHP 7.4 introduit les fonctions fléchées, qui sont des alternatives plus concises aux fonctions anonymes. Les fonctions fléchées capturent automatiquement les variables extérieures, éliminant ainsi le besoin de les utiliser.
Vous pouvez définir la fonction de rappel comme suit :
$callback = fn($val) => $val < $avg;
Filtrage de tableau simplifié avec les fonctions fléchées
Étant donné que les fonctions fléchées sont très concises, vous pouvez les intégrer directement dans array_filter call :
return array_filter($arr, fn($val) => $val < $avg);
En résumé, les fonctions use password ou arrow vous permettent de calculer des variables en dehors des fonctions de rappel et de les utiliser à l'intérieur, permettant des opérations de filtrage plus flexibles et plus pratiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!