如何使用匿名函数作为参数访问外部变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (52)

基本上,我使用这个方便的函数来处理db行(密切关注PDO和/或其他东西)。

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

我怎么能这么做?我在想这样的事情,但并不是很优雅:

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

echo $result;
提问于
用户回答回答于

代码:

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

用户回答回答于

重写“FETCH”只调用$func一次怎么样?

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

这样,您将只调用$func一次,并重新处理数组一次获取?即使调用200次函数也不确定性能。

扫码关注云+社区