Включение определения функции в function_exists проверка будет работать:
if (!function_exists('sortq')) {
function sortq($a, $b) { ... }
}
Если вы можете рассчитывать как минимум на PHP 5.3+, вы должны использовать closure :
usort($sort, function($a, $b) {
if ((int)$a->id == (int)$b->id) {
return 0;
}
return ((int)$a->id < (int)$b->id) ? -1 : 1;
});
Редактировать: На самом деле, определение функции сравнения, требуемое usort , гласит:
Функция сравнения должна возвращать целое число меньше, равно или больше нуля, если первый аргумент считается соответственно меньше, равен или больше второго.
Таким образом, вы можете упростить эту функцию до:
function ($a, $b) { return (int)$a->id - (int)$b->id; }