PHP mapes satura analīze

Pieņemsim, ka mums ir dota kāda mape dir, kas satur gan failus, gan mapes.

Iegūsim šīs mapes nosaukumu masīvu:

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

Pārbaudīsim katram nosaukumam, vai tas ir fails vai mape:

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

Ievērojiet, ka mapes nosaukums, kuru mēs skenējam, ir rakstīts divās koda vietās. Tas nav īpaši ērti. Izņemsim šo nosaukumu atsevišķā mainīgajā:

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

Tagad visiem failiem izvadīsim uz ekrānu to saturu:

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

Var pamanīt, ka ceļš uz failu tiek aprēķināts divas reizes. Izņemsim to atsevišķā mainīgajā:

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

Dota mape. Izvadiet uz ekrānu šīs mapes apakšmašu nosaukumu kolonnu.

Задание 2

Dota mape. Izvadiet uz ekrānu šīs mapes failu nosaukumu kolonnu.

Задание 3

Dota mape. Katra šīs mapes faila beigās ierakstiet pašreizējo laika momentu.