2011-07-23 24 views
1

匿名関数を使用して単純なソート関数を取得しようとしています。 ascとdescの並べ替えのためのそれぞれ1つ。匿名PHP関数の作成中に変数をレンダリングする

は、関数が作成されたときにすぐに$ SORTBY変数をレンダリングすることが可能ですが、それでも、後に呼び出されたときに渡された$ X$ yをがありますか?私はこれらを作成するときにキーを動的に渡すことができるようにしたい。

$sortBy = 'some_key'; 

// descending 
$sort['desc'] = function($x, $y) { 
    if($x['data'][$sortBy] == $y['data'][$sortBy]) 
    return 0; 

    return ($x['data'][$sortBy] > $y['data'][$sortBy]) ? -1 : 1; 
}; 

uasort($arrayToSort, $sort[$order]); 

EDIT: 私はuasortするのparamとしてこの配列を渡しています()。

答えて

3

あなたはuse keyword (Example #3 Closures and scoping)を使用してスコープを囲んで変数を渡すことができます。

$sortBy = 'some_key'; 

$sort['desc'] = function($x, $y) use ($sortBy) { 
    // implementation 
}; 
+1

私はこれが可能だった知りませんでした。ありがとう! – Failpunk