Es raro... lo que sucede en el primer caso es que no se cumple ninguna de las 2 condiciones, por eso nunca entra en el if.
No tiene mucho sentido considerando que la forma que usaste después es igual.
Por las dudas, agregá las líneas
error_reporting(E_ALL);
ini_set(display_errors, 1);
al principio del programa, y/o esto al principio del foreach:
echo $libros->anoedicion,"\n",$libros->lengua;
Hora de depurar
Saludos