Functions can be passed into any function/method that takes a callable
argument. However, empty (), in spite of how it's written in code, is not a function. It's a language construct.
If you want to pass empty as a callable, you have no choice but to wrap it in a user-defined function.
$func = function ($param) { return empty ($param); };
print_r (array_filter ([1,2, NULL, 3, 4, FALSE, 5, 6, 0, "", 7, 8, 9], $func));
or
print_r array_filter (([1,2, NULL, 3, 4, FALSE, 5, 6, 0, "", 7, 8, 9], function ($param) {
return empty ($param);
}));
Other language constructs are affected as well, so you might want to consult the manual for a list of language constructs (all the ones that terminate with () like functions are things you can't use with functions that take a callable argument).
http://php.net/manual/en/reserved.keywords.php