empty() only works on variables. Actually, you might prefer to use isset(); I think empty() will succeed if the variable can be evaluated to 0.
Despite looking like a function, empty() isn't a real function; it's a language operator. No I don't like this either, but that's how it works. isset(), unset(), list() and array() have similar characteristics: they look like functions, but they aren't.
Wade.