Comment les fonctions Lambda dans PHP peuvent-elles accéder et modifier des variables externes ?

Linda Hamilton
Libérer: 2024-11-11 12:26:03
original
867 Les gens l'ont consulté

How Can Lambda Functions in PHP Access and Modify External Variables?

Utilisation des fonctions Lambda pour accéder aux variables externes

En PHP, il est possible d'accéder à des variables externes dans les fonctions lambda, offrant ainsi une flexibilité dans le traitement des données . Cependant, comprendre les nuances de la capture de variables est crucial.

Considérez l'extrait de code :

function fetch($query, $func) {
    $query = mysql_query($query);
    while($r = mysql_fetch_assoc($query)) {
        $func($r);
    }
}

fetch("SELECT title FROM tbl", function($r){
   //> $r['title'] contains the title
});
Copier après la connexion

Ce code nous permet de traiter les lignes de la base de données à l'aide d'une fonction fournie. Cependant, si nous devons agréger les données de plusieurs lignes, nous pouvons utiliser le mot-clé use dans la fonction lambda.

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

echo $result;
Copier après la connexion

En ajoutant use ($&$result), nous demandons à la fonction lambda d'utiliser le Variable $result et transmettez-la par référence (&). Cela nous permet de concaténer les valeurs de chaque ligne en une seule variable.

Il est important de noter que les fonctions lambda utilisent une liaison anticipée, capturant la valeur des variables externes lorsque la fonction est définie, et non lorsqu'elle est appelée. Cela peut conduire à un comportement inattendu lorsque la variable externe change de valeur entre la déclaration et l'appel.

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