Maison >développement back-end >tutoriel php >Comment puis-je modifier des variables globales dans des fonctions anonymes en PHP ?

Comment puis-je modifier des variables globales dans des fonctions anonymes en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 18:37:02944parcourir

How Can I Modify Global Variables Within Anonymous Functions in PHP?

Extension de la portée des variables dans les fonctions anonymes avec des fermetures

En PHP, les fonctions anonymes fonctionnent généralement dans leur propre portée et ne peuvent pas accéder directement aux variables déclarées à l'extérieur d'eux. Cela peut poser des problèmes lors de la tentative de modification de variables globales.

Prenons un exemple :

$variable = "nothing";

functionName($someArgument, function() {
  $variable = "something";
});

echo $variable;  //output: "nothing"

Dans ce script, la fonction anonyme ne parvient pas à modifier la variable $ car elle réside dans un autre portée. Pour surmonter cette limitation, vous pouvez utiliser des fermetures.

Utiliser des fermetures pour référencer des variables globales

Les fermetures, désignées par use(), permettent aux fonctions anonymes d'accéder aux variables du portée englobante. Pour modifier une variable globale dans une fonction anonyme, incluez simplement l'opérateur & dans la fermeture :

functionName($someArgument, function() use(&$variable) {
  $variable = "something";
});

Dans cet exemple modifié, la fonction anonyme utilise l'opérateur & pour référencer la variable $variable dans la portée globale . Cela permet à la fonction de modifier la valeur de $variable, qui peut ensuite être récupérée et imprimée en dehors de sa portée.

En utilisant des fermetures, vous pouvez étendre efficacement la portée des variables dans les fonctions anonymes, offrant ainsi une plus grande flexibilité lorsque travailler avec des données mondiales.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn