使用变量为列名使用usort

时间:2018-10-19 22:51:36

标签: php

我试图弄清楚如何将变量传递到下面的usort函数中,以用作数组列名

usort($elements, function($a, $b, $sort_column) {
return $a[$sort_column] - $b[$sort_column];
});

我收到以下错误消息

Warning: Missing argument 3 for display_sorted_array::{closure}()

2 个答案:

答案 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的答案更好,应该使用它,因为它使用了专用于此的语言构造并更好地隔离了状态。