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 が認識されていないためです。グローバル変数を定義することもできますが、その解決策はあまりにもひどいものです。

何か案は?

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 に答える