I suppose you can't consider it built in (because the function is running with a user defined function), but you could always use array_filter.
Something like:
function rempty ($var)
{
return !($var == "" || $var == null);
}
$string = implode('-',array_filter($array, 'rempty'));