Nano Hash - криптовалюты, майнинг, программирование

Как найти первые 5 файлов в каталоге с PHP?

Как мне перечислить первые 5 файлов или каталогов в каталоге, отсортированном по алфавиту с помощью PHP?

21.01.2010

  • Вам нужно, чтобы они были первыми 5 файлами при сортировке по ‹названию/размеру/дате› или просто любыми 5 файлами? 22.01.2010
  • Никто не создает хороший ответ glob, используя шаблон для фильтрации каталогов? 22.01.2010

Ответы:


1

Используя scandir():

array_slice(array_filter(scandir('/path/to/dir/'), 'is_file'), 0, 5);

array_filter() вместе с функцией обратного вызова is_file() гарантирует, что мы просто обрабатываем файлы без необходимости писать цикл, нам даже не нужно заботиться о . и .., поскольку они являются каталогами.


Или используйте glob()это не будет соответствовать именам файлов, таким как .htaccess:

array_slice(glob('/path/to/dir/*.*'), 0, 5);

Или используйте glob() + array_filter() - это соответствует именам файлов, например .htaccess:

array_slice(array_filter(glob('/path/to/dir/*'), 'is_file'), 0, 5);
21.01.2010
  • Отлично, есть ли способ отсортировать файлы по дате? 01.12.2016
  • Это полезная старая тема. Но при применении array_filter он не будет работать в php 7.0. 22.07.2019

  • 2

    Вероятно, проще всего использовать scandir, если только вы не хотите сделать что-то более сложное. scandir также возвращает каталоги, поэтому мы будем фильтровать только файлы:

    $items = scandir('/path/to/dir');
    $files = array();
    for($i = 0, $i < 5 && $i < count($items); $i++) {
        $fn = '/path/to/dir/' . $items[$i];
        if(is_file($fn)) {
            $files[] = $fn;
        }
    }
    
    21.01.2010
  • $i < 5 следует заменить на count($files) < 5 22.01.2010
  • Должен ли? $i < 5 и count($files) < 5 почти одинаковы, хотя $i < 5 будет немного быстрее, так как не вызывает функцию 22.01.2010
  • $i также равно 5, когда найдено 5 каталогов... И OP хочет файлы 22.01.2010
  • Не нужно зацикливаться там... Проверьте мой ответ. 22.01.2010
  • @ Аликс в вашем ответе, что произойдет, если есть каталог (кроме . и ..)? 22.01.2010
  • @adam: Ничего, каталоги игнорируются из-за использования функции array_filter() в сочетании с обратным вызовом функции is_file(). 22.01.2010
  • ... который был добавлен после моего последнего комментария 22.01.2010
  • @adam: Нет, не делайте из меня лжеца: stackoverflow.com/revisions/ это мой первый пост, array_filter() с is_file() там есть. 22.01.2010

  • 3

    Если вы думаете о низком уровне (упорядоченном по номеру инода), то readdir — это функция для вас.

    В противном случае, если вы хотите, чтобы они были в алфавитном порядке, тогда лучше использовать scandir. вариант. Как в:

    $firstfive = array_slice(scandir("."), 2, 5);
    

    Обратите внимание, что первые две записи, возвращаемые scandir, это "." а также "..".

    21.01.2010
  • Мне нравится скандир. Но разве это не сканирует все файлы в каталоге? 22.01.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..