$dir = glob('my_files/*.txt');
$last = array_pop($dir);
preg_match('/.*_(\d+)\.txt/', $last, $matches);
$max = empty($matches)? 'null': $matches[1];
echo "Max number: $max";
Glob уже сортирует файлы. Если в my_files лежат файлы именно с указанным форматом имени, то последний будет с максимальным числом.
Если в директории могут быть файлы с другим форматом имени (number_XXX.txt, например), можно использовать цикл как у вас. Только перебирайте массив $dir с конца - там наиболее вероятно появление искомого.