Рендеринг переменной при создании анонимной функции PHP - PullRequest
1 голос
/ 23 июля 2011

Я пытаюсь получить простую функцию сортировки, использующую анонимные функции.По одному для сортировки asc и desc.

Можно ли отобразить переменную $ sortBy сразу после создания функции, но при этом все еще иметь $ x и $ y прошло при вызове позже?Я хочу иметь возможность динамически передавать ключ при их создании.

$sortBy = 'some_key';

// descending
$sort['desc'] = function($x, $y) {
  if($x['data'][$sortBy] == $y['data'][$sortBy])
    return 0;

  return ($x['data'][$sortBy] > $y['data'][$sortBy]) ? -1 : 1;
};

uasort($arrayToSort, $sort[$order]);

РЕДАКТИРОВАТЬ: Я передаю этот массив в качестве параметра для uasort ().

1 Ответ

3 голосов
/ 23 июля 2011

Вы можете передать переменную во вложенной области видимости, используя ключевое слово use ( Пример # 3 Закрытия и область действия ) :

$sortBy = 'some_key';

$sort['desc'] = function($x, $y) use ($sortBy) {
    // implementation
};
...