【发布时间】:2015-04-23 00:02:57
【问题描述】:
我正在尝试重写一个共同开发者的脚本并遇到了这个小宝石,我一生都无法理解它的作用,更不用说如何重构它了。有人可以向我解释它的作用,以及我对他的代码的解释是否正确?
原代码:
$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 是随机字符串,$v 是 ['a','b'] 或 ['b','a'] 的数组
我真的不知道尝试是什么,也许是这个?
usort($results, function () USE ($k,$v)
{
return ($v[0][$k] - $v[1][$k]);
});
【问题讨论】:
-
usort($results, $f('$a,$b'));--- 你在这里做什么:你调用一个函数并向它传递一个字符串参数(虽然它需要传递 2 个参数)。不要把它放在变量中,而是在原地创建它,你会没事的。 -
“也许是这个?” --- 可能就是这样。你的问题是什么?
-
我正在尝试将他所做的更改为更具可读性的内容,因为我不明白这是什么尝试,就像他在尝试加权函数一样。如果您不理解尝试,很难解释它
-
那么,你到底有什么不明白的?你不明白
create_function的工作原理吗?