Maison  >  Article  >  développement back-end  >  Comment les fonctions Lambda dans PHP peuvent-elles accéder et modifier des variables externes ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 12:26:03878parcourir

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
});

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;

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!

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