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!