0

我正在构建一些非常灵活的东西,它不知道它会排序。这是我正在研究的 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]);}

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

有任何想法吗?

4

1 回答 1

3
$key = 'yearofbirth';
uasort($sortme,
       function($a,$b) use ($key){
          return strcmp($a[$key],$b[$key]);
       }
      ); 
于 2012-10-15T15:15:00.487 回答