<?php
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "$entry\n";
}
}
closedir($handle);
}
?>
Il suffit donc ensuite d'utiliser filemtime pour récupérer la date de modification de chaque fichier et de garder celui qui sera le plus récent.Code : Tout sélectionner
if($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))
{
if ($file{0} != '.')
{
$list[] = date (filemtime()) . "Le chemin du fichier le plus recent est: " . $path . '/' . $file;
}
}
rsort($list);
$new_file = $list[0];
echo $new_file;
Ton code ne semble pas correct. Tu stockes tous les fichiers dans un tableau et tu ne ressors que la première valeur ajoutée.Voila ce que ca donne
Et ca fonctionne !! Merci !!Code : Tout sélectionner
if($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file{0} != '.') { $list[] = date (filemtime()) . "Le chemin du fichier le plus recent est: " . $path . '/' . $file; } } rsort($list); $new_file = $list[0]; echo $new_file;
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if ($tampon){
if ( date("YmdHis", filemtime($file)) > date("YmdHis", filemtime($tampon)) ) {
$tampon = $file;
}
}
else
{
$tampon = $file;
}
}
}
closedir($handle);
echo $tampon;
}Code : Tout sélectionner
ini_set('display_errors', true);
function getFileByDate($filename, $recursive = false, $flag = SORT_REGULAR)
{
if (!is_dir($filename))
{
trigger_error("filename '{$filename}' is not a directory.");
}
$result = array();
foreach (new FilesystemIterator($filename) as $element)
{
$filename = $element->getFilename();
$realpath = $element->getRealPath();
$timestamp = $element->getCTime();
if ($recursive == true && $element->isDir())
{
$result[$timestamp] = getFileByDate($realpath, $recursive);
}
if ($element->isFile())
{
$result[$timestamp] = $realpath;
}
}
sort($result, $flag);
return $result;
}
var_dump(getFileByDate(__DIR__));
Une comparaison en seconde uniquement suffit et est bien plus simple à opèrer. de plus c'est le format de sortie de filemtime()Je vais argumenter un peu plus mon message précédent.
La fonction filemtime() renvoie une date au format Timestamp Unix.
Pour comparer 2 dates de ce format, je te propose ceci :
Imaginons 2 date telles :Comment comparer ces 2 dates ? La façon la plus simple pour moi serait de les transformer comme ceci :
- 19 Janvier 2016 18h25 & 32s
14 Janvier 2015 13h32 & 22s
Annee/Mois/Jour/Heure/Minute/Seconde
Ça donnerait donc :Ainsi, 20160119182532 > 20150114133222
- 19 Janvier 2016 18h25 & 32s --> 2016.01.19.18.25.32
14 Janvier 2015 13h32 & 22s--> 2015.01.14.13.32.22