PHP: список файлов в каталоге без перечисления подкаталогов

Это начальная часть моего кода для отображения файлов в каталоге:

$files = scandir($dir); 
$array = array(); 
foreach($files as $file)
{
    if($file != '.' && $file != '..' && !is_dir($file)){
          ....

Я пытаюсь перечислить все файлы в каталоге без перечисления вложенных папок. Код работает, но отображается как файлы, так и папки. Я добавил !is_dir($file), как вы видите в моем коде выше, но результаты все те же.

Ответ 1

Это должно быть так, я думаю:

$files = scandir($dir); 
foreach($files as $file)
{
    if(is_file($dir.$file)){
      ....

Ответ 2

Просто используйте is_file.

Пример:

foreach($files as $file)
{
    if( is_file($file) )
    {
       // Something
    }
}

Ответ 3

Какая боль для чего-то такого, казалось бы, простого! Ничто не помогло мне... Чтобы получить результат, я предположил, что имя файла имеет расширение, которое оно должно в моем случае.

if ($handle = opendir($opendir)) {
    while (false !== ($entry = readdir($handle))) {
        $pos = strpos( $entry, '.' );
        if ($entry != "." && $entry != ".." && is_numeric($pos)  ) {

............ хорошая запись

Ответ 4

Это сканирует файлы и проверяет, если. или.. находится в массиве. Затем нажмите файлы, исключая. и.. в массиве новых файлов [].

Попробуйте следующее:

$scannedFiles = scandir($fullPath);
$files = [];

foreach ($scannedFiles as $file) {
    if (!in_array(trim($file), ['.', '..'])) {
        $files[] = $file;
    }
}