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

Susan Sarandon
Libérer: 2024-11-12 18:37:02
original
892 Les gens l'ont consulté

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"
Copier après la connexion

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";
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal