Необходимо создавать и определять функцию во время выполнения программы.
Это делается при помощи функции create_function():
$add = create_function(' $i , $j ' , ' return $i+$j; ');
$add(1 , 1); // возвращает 2
Первый параметр функции create_function() представляет собой строку, содержащую аргументы функции, а второй параметр – тело функции. Функция create_function() работает крайне медленно, поэтому,
если возможно заранее определить функцию, лучше так и сделать.
Чаще всего функция create_function() используется при разработке
пользовательских вариантов функций сортировки usort() или array_walk():
// сортирует файлы в порядке, обратном обычному
usort($files , create_function(' $a , $b ' , ' return strnatcmp($b , $a); '));
Документацию по функции create_function() на http://www.php.net/create-function и по функции usort() на http://www.php.net/usort.