Maison >développement back-end >tutoriel php >Comment puis-je accéder et modifier des variables externes dans une fonction anonyme en PHP ?

Comment puis-je accéder et modifier des variables externes dans une fonction anonyme en PHP ?

DDD
DDDoriginal
2024-11-14 17:56:02853parcourir

How can I access and modify external variables within an anonymous function in PHP?

Utilisation de fonctions anonymes comme paramètres pour accéder aux variables externes

Le scénario implique une fonction pratique qui traite facilement les lignes de la base de données. Cependant, une exigence spécifique se pose lorsque vous devez concaténer tous les titres du jeu de résultats dans une seule variable. Cela soulève la question de savoir comment y parvenir sans recourir à l'approche moins élégante consistant à utiliser le mot-clé global.

Une solution réside dans l'utilisation de variables de fermeture. Plus précisément, le mot-clé use permet aux fermetures d'hériter des variables de la portée parent. Ceci est différent des variables globales, qui persistent dans toutes les fonctions.

Pour implémenter cette solution, le code peut être modifié comme suit :

$result = '';
fetch("SELECT title FROM tbl", function($r) use (&$result) {
   $result .= $r['title'];
});

En ajoutant use ($result) à la fonction anonyme, nous pouvons référencer et modifier la variable résultat depuis la fonction. Le mot-clé use transmet effectivement une référence à la variable de résultat à la fermeture.

Il est important de noter que cette approche implique une liaison précoce, ce qui signifie que la fermeture utilise la valeur de la variable au moment de la déclaration de la fonction, pas au moment de l'appel de fonction (liaison tardive). C'est quelque chose à garder à l'esprit lors de l'utilisation de fermetures à cette fin.

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