从函数内的函数访问变量?

时间:2013-02-23 18:58:56

标签: php

我有以下代码:

function create_sort_callback($criteria)
{
  return function($a, $b)
  {
    $a = $a[$criteria];
    $b = $b[$criteria];

    return ($a == $b ? 0 : (($a < $b) ? -1 : 1));
  };
}

事实证明我无法从内部函数中访问$criteria。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

试试这个

function create_sort_callback($criteria)
{
  return function($a, $b) use($criteria)
  {
    $a = $a[$criteria];
    $b = $b[$criteria];

    return ($a == $b ? 0 : (($a < $b) ? -1 : 1));
  };
}

您需要使用闭包http://www.php.net/manual/en/functions.anonymous.php

答案 1 :(得分:0)

使用use关键字。

function create_sort_callback($criteria)
{
  return function($a, $b) use ($criteria)
  {
    $a = $a[$criteria];
    $b = $b[$criteria];

    return ($a == $b ? 0 : (($a < $b) ? -1 : 1));
  };
}