我正在尝试遍历mysql结果并在每条记录上运行匿名函数,但我在变量范围方面遇到了一些麻烦。这个问题是一个更大的流程的一部分,但我在这里创建了一个简单的例子,它简单地说明了这个问题:
function runLoop($some_mysql_resource){
$res = 'RESULTS: ';
sqlEach($some_mysql_resource, function($sql){
$res .= $sql['id'].',';
})
return $res;
);
有没有办法让runLoop函数在上面输出以下内容而不改变逻辑流程?
RESULTS: 1,2,3,4,etc...
答案 0 :(得分:2)
使用$res
use
作为参考“引用”传递给您的回调
function runLoop($some_mysql_resource){
$res = 'RESULTS: ';
sqlEach($some_mysql_resource, function($sql) use (&$res) {
$res .= $sql['id'].',';
})
return $res;
);
我假设$sql
已在您的实际代码中的某处定义,因此将具有范围