У меня есть следующая функция сортировки массивов:
public function sortAscending($accounts)
{
function ascending($accountA, $accountB) {
if ($accountA['AmountUntilNextTarget'] == $accountB['AmountUntilNextTarget']) {
return 0;
}
return ($accountA['AmountUntilNextTarget'] < $accountB['AmountUntilNextTarget']) ? -1 : 1;
}
usort($accounts, $ascending);
return $accounts;
}
Очевидно, это не идеально, поскольку это жестко запрограммировать ключ для поиска. Я подумал, что сделаю это общим, передав ключ в качестве параметра внешней функции, однако тогда это выходит за рамки внутренней функции. Я попытался обойти это, используя замыкание, которое будет иметь доступ к параметру вместо внутренней функции следующим образом:
public function sortAscending($accounts, $key)
{
$ascending = function($accountA, $accountB) {
if ($accountsA[$key] == $accountB[$key]) {
return 0;
}
return ($accountA[$key] < $accountB[$key]) ? -1 : 1;
}
usort($accounts, $ascending);
return $accounts;
}
Однако usort () принимает только имя функции, поэтому это не работает. Кто-нибудь может увидеть (лучший?) способ достижения этого?