Отличаем папку от файла в PHP

Пусть у вас есть строка, содержащая путь к файлу или папке. С помощью специальных функций is_file и is_dir мы можем отличить, ссылается путь на файл или на папку.

Они работают следующим образом:

<?php $path = 'некий путь'; var_dump(is_file($path)); // true для файла, false для папки var_dump(is_dir($path)); // true для папки, false для файла ?>

Пусть дан путь. Если путь ведет к папке выведите сообщение об этом.

Пусть дан путь. Если путь ведет к файлу выведите сообщение об этом.

Разбираем содержимое папки

Пусть у нас дана некоторая папка dir, содержащая в себе как файлы, так и папки.

Давайте получим массив имен из этой папки:

<?php $files = array_diff(scandir('dir'), ['..', '.']); ?>

Давайте для каждого имени проверим, это файл или папка:

<?php $files = array_diff(scandir('dir'), ['..', '.']); foreach ($files as $file) { echo $file; var_dump(is_file('dir/' . $file)); } ?>

Обратите внимание на то, что имя папки, которую мы сканируем, написано в двух местах кода. Это не очень удобно. Вынесем это имя в отдельную переменную:

<?php $dir = 'dir'; $files = array_diff(scandir($dir), ['..', '.']); foreach ($files as $file) { echo $file; var_dump(is_file($dir. '/' . $file)); } ?>

Давайте теперь для всех файлов выведем на экран их содержимое:

<?php $dir = 'dir'; $files = array_diff(scandir($dir), ['..', '.']); foreach ($files as $file) { if (is_file($dir. '/' . $file)) { echo file_get_contents($dir. '/' . $file); } } ?>

Можно заметить, что путь к файлу вычисляется два раза. Давайте вынесем его в отдельную переменную:

<?php $dir = 'dir'; $files = array_diff(scandir($dir), ['..', '.']); foreach ($files as $file) { $path = $dir. '/' . $file; // путь к файлу if (is_file($path)) { echo file_get_contents($path); } } ?>

Дана папка. Выведите на экран столбец имен подпапок из этой папки.

Дана папка. Выведите на экран столбец имен файлов из этой папки.

Дана папка. Запишите в конец каждого файла этой папки текущий момент времени.