Basicamente, eu uso esta função útil para processar linhas db (preste atenção no PDO e / ou outras coisas)
function fetch($query,$func) {
$query = mysql_query($query);
while($r = mysql_fetch_assoc($query)) {
$func($r);
}
}
Com esta função, posso simplesmente fazer:
fetch("SELECT title FROM tbl", function($r){
//> $r['title'] contains the title
});
Digamos que agora eu precise concatenar tudo $r['title']
em uma var (este é apenas um exemplo).
Como posso fazer isso? Eu estava pensando algo assim, mas não é muito elegante:
$result = '';
fetch("SELECT title FROM tbl", function($r){
global $result;
$result .= $r['title'];
});
echo $result;
early binding
. No entanto eu acho que no exemplo acima quandouse (&$result)
é passado por referência realmente não importa?use
é a vinculação inicial - se você quer dizer uma solução alternativa para a vinculação tardia - você passaria a variáveluse
por referência - usando&
=>use (&$result)
e alteraria a$result
variável antes de chamar a função anônima (ou algo que a chame)Que tal reescrever 'fetch' para chamar $ func apenas uma vez?
Desta forma, você chamaria $ func apenas uma vez e reprocessaria o array uma vez obtido? Não tenho certeza sobre o desempenho, mesmo que chamar 200 vezes uma função não soe como uma boa ideia.
fonte