Ignora il codice precedente, c'era un problema. Con questo nel caso non ci siano numeri mancanti nella sequenza dei nomi dei file ti restituisce il nome successivo all'ultimo già pronto per l'uso, se invece ne mancano ti restituisce il primo nome utilizzabile.
Codice PHP:
<?php
$files = array("file1.txt","file6.txt","file4.txt","file3.txt","file2.txt","file5txt");
// in questo caso restituirebbe file7.txt perchè non ne manca nessuno
// $files = array("file1.txt","file6.txt","file4.txt","file3.txt","file2.txt");
// in questo caso restituirebbe file5.txt, cioè il primo mancante
function prossimoFile($array) {
usort($array,"strnatcmp");
$numeri = array();
$tmp = array();
foreach($array as $file) {
$numero = preg_replace("/[^\\d]/",'',$file);
$numeri[] = $numero;
$tmp[] = $numero;
}
$maggiore = array_pop($tmp);
$mancanti = array_diff(range(1,$maggiore),$numeri);
if (count($mancanti) == 0){
$maggiore = $maggiore+1;
return "file".$maggiore.".txt";
}
else {
$primo_mancante = array_slice($mancanti,0,1);
return 'file'.$primo_mancante[0].'.txt';
}
}
$successivo = prossimoFile($files);
echo $successivo;
?>