Básicamente, utilizo esta práctica función para procesar filas de base de datos (cierre un ojo en PDO y / u otras cosas)
function fetch($query,$func) {
$query = mysql_query($query);
while($r = mysql_fetch_assoc($query)) {
$func($r);
}
}
Con esta función simplemente puedo hacer:
fetch("SELECT title FROM tbl", function($r){
//> $r['title'] contains the title
});
Digamos que ahora necesito concatenar todo $r['title']
en una var (esto es solo un ejemplo).
¿Cómo puedo hacer eso? Estaba pensando en algo como esto, pero no es muy elegante:
$result = '';
fetch("SELECT title FROM tbl", function($r){
global $result;
$result .= $r['title'];
});
echo $result;
early binding
. Sin embargo, supongo que en el ejemplo anterior, cuandouse (&$result)
se pasa por referencia, ¿realmente no importa?use
es el enlace temprano - si te refieres a una solución para el enlace tardío - pasarías la variableuse
por referencia - usando&
=>use (&$result)
y alterar la$result
variable antes de llamar a la función anónima (o algo que la llame)¿Qué hay de reescribir 'fetch' para llamar a $ func solo una vez?
De esta manera, ¿llamaría a $ func solo una vez y volvería a procesar la matriz una vez recuperada? No estoy seguro del rendimiento, incluso aunque llamar 200 veces una función no parece una buena idea.
fuente