有没有替代uasort可以按键排序?

时间:2012-10-15 15:11:52

标签: php arrays sorting

我正在构建一些非常灵活的东西,它不知道它会分类什么。这是我正在研究的REDIS的一部分。无论如何,我需要通过用户定义的键对数组进行排序。所以这个:

var $sortme=Array(
  "a"=>array("name"=>"john","yearofbirth"=>2000),
  "b"=>array("name"=>"andre","yearofbirth"=>1994))

我想通过“名字”或“年度出生”对此进行排序。要按名称排序,我使用:

uasort($sortme,function($a,$b){return strcmp($a["name"],$b["name"]);}

但我希望能够按任意键排序,以使事情尽可能灵活。我的第一次尝试就是这个,但那不起作用:

$sortby="name";
uasort($sortme,function($a,$b){return strcmp($a[$sortby],$b[$sortby]);}

它不起作用的原因是在sort函数中不知道$ sortby。我可以为它定义一个全局变量,但这个解决方案太可怕了。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

$key = 'yearofbirth';
uasort($sortme,
       function($a,$b) use ($key){
          return strcmp($a[$key],$b[$key]);
       }
      );