Сортировка с использованием компаратора «create_function» в PHP до 5.3?

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

5
задан hakre 31 May 2012 в 09:50
поделиться