如何访问封闭函数的变量?

kay*_*ahr 3 php

我在其他函数中使用了一个回调函数,我需要从这个封闭函数中访问一个变量,但不知道该怎么做.这是一个例子:

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)

所以我将一些标志传递给外部函数,然后在排序回调函数中使用它来决定如何对值进行排序.是的,我知道我可以检查外部函数中的标志,然后调用不同的排序函数,但这不是问题.

问题是如何在回调中访问外部函数的变量(或参数).而不是使用全局变量.如果真的没办法,"这是不可能的"答案也是可以接受的.

chi*_*org 5

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)