Видимость переменнйо в пользовательской функции

Copenhagen

Новичок
Код:
PHP:
function ololo() {
...
$field_list=array(...);
...
     function cmp_for_uksort($a,$b) {   
            $f_list=array_flip($field_list);
            $a = $f_list[$a];
            $b = $f_list[$b];
            return strcmp($a,$b);
        }
uksort($newarray[$index],"cmp_for_uksort");
...
}
В строке $f_list=array_flip($field_list); ошибка в array_flip, $field_list не определен.
Как в пользовательской функции cmp_for_uksort получить доступ к $field_list? Во всех учебниках пишется про использование $GLOBALS. Но как быть, если переменная-то не глобальная, а локальная в функции уровнем выше?
 

Copenhagen

Новичок
Для uksort пользовательская функция может быть только с двумя аргументами $a,$b
 

AmdY

Пью пиво
Команда форума
Copenhagen
используй лябда-функцию, расшарь переменную через use
 

A1x

Новичок
сделать через замыкание
PHP:
function ololo() {
...
$field_list=array(...);
...
$cmp =     function ($a,$b) use ($field_list) {   
            $f_list=array_flip($field_list);
            $a = $f_list[$a];
            $b = $f_list[$b];
            return strcmp($a,$b);
        }
uksort($newarray[$index], $cmp);
...
}
 
Сверху