De hecho el if está bien, ya que en este caso lo que se desea es justamente hacer una asignación, y dependiendo del resultado de esa asignación se ejecutará o no el if. Si opendir() devuelve false, $dir2 tomará ese valor, y la condición global también. Es totalmente válido y correcto.
@Nexdanny, bienvenido al foro! Para hacer lo que dices debes tener una variable "bandera" que le indique a tu script que ya se encontró algún archivo. Al final del proceso, dependiendo del valor de tu variable bandera sabrás si hubo o no coincidencias:
Código PHP:
//....
if ($files{0} == $letra){
echo $files."<br>";
$flag = true; // Variable "bandera"
}
//....
closedir($dir);
// Verificando
if(!$flag) {
echo "No hay resultados";
}