@SimpleAlex

Максимальное число на PHP?

В папке есть файлы:
number_1.txt
number_30.txt
number_12.txt

Как получить максимальную цифру из названий файла?
То есть 30

Сделал вот так, но дальше не соображу:
$dir = glob('my_files/*.txt');

foreach ($dir as $file) {
    if(preg_match('/\.(txt)/', $file)){
    $file = str_replace(['number', '.txt', 'my_files'], '', $file);
    echo $file.'<br>';
	}
}
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
1. берем все файлы и удаляем из имени всё кроме цифр
2. находим максимальное значение в массиве через max()
$files = glob('my-files/*.txt');

$max = max(
    array_map(
        fn($val) => preg_replace('![\D]+!', '', basename($val)), 
        $files
    )
);

var_dump($max);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iljaGolubev
$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 с конца - там наиболее вероятно появление искомого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы