Tienes dos errores, que son de concepto:
Código PHP:
function palabras($a,$b)
{
if ($a == 1 || $a == 2)
{
$perfecto = "mal";
}
elseif($b == 1 || $b == 2)
{
$perfecto = "mal";
}
else
{
return $perfecto = "ok"; <-------- Error #1
}
}
Código PHP:
echo $mivariable = palabras(); <---------------- Error #2
Error #1: Debes hacer el return fuera de la sentencia if, como puso "CX" mas arriba, porque si lo haces solo donde lo pusiste, el problema radicará en que solo obtendrás el valor de $perfecto unicamente para el "else", osea asignas el valor de $perfecto para cada caso y al final de la asignación haces el return $perfecto
Error #2: aquí intentaste asignar el valor de una variable mientras la estás imprimiendo por pantalla con el "echo", eso no se puede hacer. Se hace en 2 pasos, primero asignas la variable y luego impimes el resultado, exactamente como te lo puesto "CX" en el ejemplo de arriba.
Prueba con lo que te ha dicho "CX" y cuentanos como te va.
Saludos!