PHP で無名関数を使用したことはありませんが、オブジェクトをソートするために無名関数を使用するコードを見つけました。
usort($numTurnsPerUser,build_sorter('turns'));
function build_sorter($key) {
return function ($a, $b) use ($key) {
return strnatcmp($a[$key], $b[$key]);
};
}
このコードは、オブジェクトをキーでソートします (「ターン」を渡します)。たとえば、次のようなオブジェクト: (読みやすくするために JSON で記述されています)
$numTurnsPerUser = {
"31":{
"turns":15,
"order":0
}, "36":{
"turns":12,
"order":1
}, "37":{
"turns":14,
"order":2
}
}
次のようなオブジェクトにソートされます。
$numTurnsPerUser = {
"36":{
"turns":12,
"order":1
}, "37":{
"turns":14,
"order":2
}, "31":{
"turns":15,
"order":0
}
}
これは、PHP 5.3.0 を実行しているローカル サーバーではうまく機能しましたが、「php5」を実行しているオンライン サーバーでは機能しません。それ以外の情報を見つけることができません。エラーが発生します
解析エラー: 構文エラー、予期しない T_FUNCTION
PHP < 5.3 では無名関数を使用できず、create_function を使用する必要があると読みましたが、無名関数の「使用」部分に困惑しました。誰かが関数の「使用」部分が何であるか、またはさらに良いことに、これを必要な create_function パラメータに「変換」する方法を説明してもらえますか?