我在其他函数中使用了一个回调函数,我需要从这个封闭函数中访问一个变量,但不知道该怎么做.这是一个例子:
function outer($flag)
{
$values = array(1, 5, 3, 9);
usort($values, function($a, $b)
{
if ($flag)
{
// Sort values in some way
}
else
{
// Sort values in some other way
}
});
}
Run Code Online (Sandbox Code Playgroud)
所以我将一些标志传递给外部函数,然后在排序回调函数中使用它来决定如何对值进行排序.是的,我知道我可以检查外部函数中的标志,然后调用不同的排序函数,但这不是问题.
问题是如何在回调中访问外部函数的变量(或参数).而不是使用全局变量.如果真的没办法,"这是不可能的"答案也是可以接受的.
有use
关键字.它使函数的当前值可用.
function outer($flag)
{
$values = array(1, 5, 3, 9);
usort($values, function($a, $b) use ($flag)
{
if ($flag)
{
// Sort values in some way
}
else
{
// Sort values in some other way
}
});
}
Run Code Online (Sandbox Code Playgroud)