以令人困惑的 usort 结束

Closure with confusing usort

我正在尝试重写一个共同开发者的脚本,运行 跨过这个 gem,我一辈子都无法理解它的作用,更不用说如何重构它了。有人可以向我解释一下它的作用吗,我对他的代码的解释是否正确?

原代码:

$f = "return (${$v[0]}['{$k}'] - ${$v[1]}['{$k}']);";
usort($results, create_function('$a,$b',$f));

我的尝试并将其重写为闭包:

$f = function ($k,$v)
{
    return ($v[0][$k] - $v[1][$k]);
};

usort($results, $f($k, $v));

编辑

为清楚起见,$k 是一个 运行dom 字符串,$v 是一个 ['a','b']['b','a'][= 的数组17=]

我真的不知道这是什么尝试,也许是这个?

usort($results, function () USE ($k,$v) 
{
    return ($v[0][$k] - $v[1][$k]);
});

你只需要这样做

$f = function ($k,$v)
{
    return ($v[0][$k] - $v[1][$k]);
};

usort($results, $f);

阅读 php.net

中有关 Closures and usort 的更多信息