Я никогда раньше не использовал анонимные функции в 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?