我以前从未在 PHP 中使用过匿名函数,但我发现了一段代码,它使用一个来对对象进行排序
usort($numTurnsPerUser,build_sorter('turns'));
function build_sorter($key) {
return function ($a, $b) use ($key) {
return strnatcmp($a[$key], $b[$key]);
};
}
此代码将按键对对象进行排序(我传入“turns”)。例如,一个看起来像这样的对象:(用 JSON 编写,只是为了便于阅读)
$numTurnsPerUser = {
"31":{
"turns":15,
"order":0
}, "36":{
"turns":12,
"order":1
}, "37":{
"turns":14,
"order":2
}
}
将被分类为如下所示的对象:
$numTurnsPerUser = {
"36":{
"turns":12,
"order":1
}, "37":{
"turns":14,
"order":2
}, "31":{
"turns":15,
"order":0
}
}
这在运行 PHP 5.3.0 的本地服务器上运行良好,但无法在运行“php5”的在线服务器上运行——除此之外我找不到任何信息。我收到一个错误
解析错误:语法错误,意外的 T_FUNCTION
我读到 PHP < 5.3 不能使用匿名函数,必须使用 create_function,但是匿名函数的“使用”部分让我很困惑。有人可以向我解释一下函数的“使用”部分是什么,或者更好的是,我如何将它“翻译”为所需的 create_function 参数?