У меня есть функция сортировки массива следующим образом:
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 () принимает только имя функции, поэтому это нет работа.Кто-нибудь может увидеть (лучше?) Способ достижения этого?