Hola,
El uso del return, finaliza la función.
Si se cumple if ($i<$palabras-1){return " "; te devolverá una cadena vacia y si no se cumple te devolverá el primer elemento de $dividir. Y aquí se acaba la función.
Por que dices que la cosa se pone fea??
Prueba:
Código PHP:
<?php
function nombre_receta2($receta,$palabras){
if ($palabras>0){
$dividir=explode(" ",$receta);
$numero_palabras=count($dividir);
for ($i=0; $i<$palabras; $i++){
if ($i<$palabras-1){
return "vacio";
}
return $dividir[$i];
}
}
else{
return $receta;
}
}
$salida=nombre_receta2("esto es una receta", 4);
echo $salida;
?>
Saludos