Date le specifiche
- accesso a file con nome *.dati.txt
- numero di file variabile ma in quantità limitata
- ogni file contiene un numero e solo quello
chiedi di calcolare la sommatoria dei numeri contenuti nei file.
Prendendo spunto dalla soluzione già proposta e corretta fornita da codencode, aggiungendo un controllo sul file che andiamo a leggere perchè sia quello da specifica e sintetizzando il codice necessario ad otterenre la funzionalità mi è saltato fuori quel che segue
Codice PHP:
<?php
$dati_generali = 0;
$percorso = "./file/";
($dir = scandir($percorso)) or die("Lettura directory fallita");
foreach($dir as $file)
if(is_file($percorso.$file) and strpos($percorso.$file,'.dati.txt')!==false)
$dati_generali+=file_get_contents($percorso.$file);
echo $dati_generali;
?>
Può piacere? 
Se poi invece sei un amante delle funzioni e desideri generalizzare il codice ottengo
Codice PHP:
<?php
/**
* Legge dalla path specificata tutti i file che rispondono alla regexp
* prelevandone il contenuto (che deve ssere un numero) e restituendone la
* sommatoria
* @param String $path La directory contenente i file
* @param String $regexp L'espressione regolare utilizzata per la verifica dei nomi file
* @return int
*/
function SommaDaFile($path, $regexp) {
$somma = 0;
($dir = scandir($path)) or die("Lettura directory fallita");
foreach ($dir as $file)
if (is_file($path . $file) and preg_match ($regexp, $file))
$somma+=file_get_contents($path . $file);
return $somma;
}
//Esempio di utilizzo della funzione nel caso in oggetto supponendo che
//username sia composto di soli caratteri alfabetici e numerici
echo SommaDaFile("./file/", '/^\w+\.dati\.txt$/');
?>
che fa le stesse identiche cose del codice precedente ma in più ti permette di accedere in modo più mirato ai file di interesse, ignorando gli altri, e su una qualunque cartella.
Se poi ancora non basta perchè sei un amante della cattura degli errori allora puoi
Codice PHP:
<?php
/**
* Legge dalla path specificata tutti i file che rispondono alla regexp
* prelevandone il contenuto (che deve ssere un numero) e restituendone la
* sommatoria
* @param String $path La directory contenente i file
* @param String $regexp L'espressione regolare utilizzata per la verifica deifile
* @return int
*/
function SommaDaFile($path, $regexp) {
$somma = 0;
if(($dir = scandir($path))===false)
throw new Exception("Impossibile leggere il contenuto di $path",1);
foreach ($dir as $file)
if (is_file($path . $file) and preg_match ($regexp, $file)){
if(($num=file_get_contents($path . $file))===false)
throw new Exception("Si è verificato un errore nell'accesso al file $file", 2);
$somma+=$num;
}
return $somma;
}
try{
//Esempio di utilizzo della funzione nel caso in oggetto supponendo che
//username sia composto di soli caratteri alfabetici e numerici
echo SommaDaFile("./file/", '/^\w+\.dati\.txt$/');
}catch (Exception $e){
die($e->getMessage());
}
?>
che fa sempre la stessa cosa.
E poi non so... ma penso sia una buona base per cominciare