Analyser le contenu d'un dossier en PHP

Supposons que nous ayons un dossier dir, contenant à la fois des fichiers et des dossiers.

Obtenons un tableau des noms de ce dossier :

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

Vérifions pour chaque nom s'il s'agit d'un fichier ou d'un dossier :

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

Remarquez que le nom du dossier que nous scannons est écrit à deux endroits dans le code. Ce n'est pas très pratique. Mettons ce nom dans une variable séparée :

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

Affichons maintenant le contenu de tous les fichiers :

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

On peut remarquer que le chemin vers le fichier est calculé deux fois. Mettons-le dans une variable séparée :

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

Un dossier est donné. Affichez à l'écran une colonne des noms des sous-dossiers de ce dossier.

Задание 2

Un dossier est donné. Affichez à l'écran une colonne des noms des fichiers de ce dossier.

Задание 3

Un dossier est donné. Écrivez à la fin de chaque fichier de ce dossier l'instant présent.