我试图弄清楚如何将变量传递到下面的usort函数中,以用作数组列名
usort($elements, function($a, $b, $sort_column) {
return $a[$sort_column] - $b[$sort_column];
});
我收到以下错误消息
Warning: Missing argument 3 for display_sorted_array::{closure}()
答案 0 :(得分:1)
您可以使用use
关键字:
usort($elements, function($a, $b) use ($sort_column) {
return $a[$sort_column] - $b[$sort_column];
});
答案 1 :(得分:0)
usort()
调用闭包,并且总是只使用$ a和$ b vars来调用闭包。
但是,您可以在函数中使用可怕的global
关键字并设置全局变量,然后再调用usort,如下所示:
$sort_column = 'whatever';
usort($elements, function($a, $b) {
global $sort_column;
return $a[$sort_column] - $b[$sort_column];
});
将其保留下来,因为它会向人们显示为什么要这样做,但devon的答案更好,应该使用它,因为它使用了专用于此的语言构造并更好地隔离了状态。