从函数范围内访问 php 变量

Accessing php variable from within function scope

我在 codeigniter 控制器中有这段代码,它是视图中 table 的 pagination/sorting 功能的开始。我将 order_by 作为查询参数传递,然后这是控制器操作的一部分:

if ($order_by)
{
  function compare_items ($a, $b){
    return $b['value'][$order_by] <=> $a['value'][$order_by];
  };
  usort($data['items'], 'compare_items');
}

问题是...我一直收到错误 Undefined variable: order_by

既然我正在检查 if 语句中是否存在 $order_by,为什么会出现此错误?甚至将 var_dump() 放在 if 语句 returns 中,一个字符串与我在查询参数中输入的任何内容相匹配。硬编码值 (return $b['value']['<test_param>'] <=> $a['value']['<test_param>'];) 工作得很好,即使 if 保持 if 语句不变。

是否有一些我不知道的 php 作用域行为导致了此错误?我真的是一个 javascript/React 开发者,我希望我只是在 php.

中遗漏了一些简单的东西

外部变量必须使用“use”

if ($order_by)
{
    usort($data['items'], function ($a, $b) use ($order_by) {
        return $b['value'][$order_by] <=> $a['value'][$order_by];
    });
}