101 votes

Accéder à une variable externe en utilisant une fonction anonyme en tant que paramètres

Fondamentalement, j'utilise cette fonction pratique pour traiter les lignes de base de données (fermer un œil sur PDO et/ou d'autres trucs)

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

Avec cette fonction je peux simplement faire :

 fetch("SELECT title FROM tbl", function($r){
   //> $r['title'] contains the title
});

Disons maintenant que je dois concaténer tous les $r['title'] dans une var (ce n'est qu'un exemple).

Comment pourrais-je faire ça ? Je pensais à quelque chose comme ça, mais ce n'est pas très élégant :

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

echo $result;

0voto

user103307 Points 19

Que diriez-vous de réécrire 'fetch' pour appeler $func une seule fois ?

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

De cette façon, vous appelleriez $func une seule fois et re-traiteriez le tableau une fois récupéré ? Pas sûr de la performance, même si appeler 200 fois une fonction ne semble pas être une bonne idée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X