Analizando el contenido de una carpeta en PHP

Supongamos que tenemos una carpeta dir, que contiene tanto archivos como carpetas.

Obtengamos un array de nombres de esta carpeta:

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

Verifiquemos para cada nombre si es un archivo o una carpeta:

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

Tenga en cuenta que el nombre de la carpeta que escaneamos está escrito en dos lugares del código. Esto no es muy conveniente. Pongamos este nombre en una variable separada:

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

Ahora mostremos en pantalla el contenido de todos los archivos:

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

Se puede notar que la ruta al archivo se calcula dos veces. Pongámosla en una variable separada:

php<?php
  $dir = 'dir';
  $files = array_diff(scandir($dir), ['..', '.']);
  
  foreach ($files as $file) {
    $path = $dir. '/' . $file; // ruta al archivo
    
    if (is_file($path)) {
      echo file_get_contents($path);
    }
  }
?>
Задание 1

Se da una carpeta. Muestre en pantalla una columna de nombres de subcarpetas de esta carpeta.

Задание 2

Se da una carpeta. Muestre en pantalla una columna de nombres de archivos de esta carpeta.

Задание 3

Se da una carpeta. Escriba al final de cada archivo de esta carpeta el momento temporal actual.