close
PHP 檔案列表依日期排序
 
原來使用dir是無法依檔案日期排序,改用以下的function Sort_Files_By_Date,可以依檔案日期排序列出。
 

原來使用dir方式的程式,無法依日期排序

$src_dir = "e:\\ftp\\005server\\";
$d = dir($src_dir);
while($entry=$d->read()) {
   if ($entry != "." && $entry != ".."){
      echo "$entry."---".date("Y-m-d H:i:s",filemtime($src_dir.$entry))."---".filesize($src_dir.$entry)."<br>";
   }
}
$d->close();
 
 

使用function Sort_Files_By_Date,可以依檔案日期排序列出

 

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title></title>

 

</head>

<body>

 

<?php

date_default_timezone_set('Asia/Taipei');

$src_dir = "c:\\temp\\";

$array = Sort_Files_By_Date($src_dir, "descending", "Y-m-d H:i:s");

$info = $array[0];

$sort_type = $array[1];

 

echo "目錄:".$src_dir."<br>";

echo "排序by:檔案最後修改日 (".$sort_type.")<br />";

foreach($info as $key => $detail)

{

echo "檔名:".$detail['file']."---大小:".$detail['size']."<br>";

echo "最後修改日:".$detail['date']."---";

 

$time_passed = '';

foreach($detail['time_passed'] as $type => $value)

{

$time_passed .= $value." ".$type.", ";

}

$time_passed = rtrim($time_passed, ", ")." 前";

echo $time_passed."<br>---------------------------------------<br>";

}

?>

<?php

function Sort_Files_By_Date($dir, $sort_type, $date_format)

{

$files = scandir($dir);

$array = array();

foreach($files as $file)

{

if($file != '.' && $file != '..')

{

$now = time();

$last_modified = filemtime($dir.$file);

$time_passed_array = array();

$diff = $now - $last_modified;

$days = floor($diff / (3600 * 24));

if($days)

{

$time_passed_array['days'] = $days;

}

$diff = $diff - ($days * 3600 * 24);

$hours = floor($diff / 3600);

if($hours)

{

$time_passed_array['hours'] = $hours;

}

$diff = $diff - (3600 * $hours);

$minutes = floor($diff / 60);

if($minutes)

{

$time_passed_array['minutes'] = $minutes;

}

$seconds = $diff - ($minutes * 60);

$time_passed_array['seconds'] = $seconds;

$array[] = array('file'=> $file,

'timestamp'=> $last_modified,

'date'=> date ($date_format, $last_modified),

'time_passed'=> $time_passed_array,

'size'=> filesize($dir.$file));

}

}

usort($array, create_function('$a, $b', 'return strcmp($a["timestamp"], $b["timestamp"]);'));

if($sort_type == 'descending')

{

krsort($array);

}

return array($array, $sort_type);

}

?>

 

</body>

</html>

 
arrow
arrow
    全站熱搜

    adamschen9921 發表在 痞客邦 留言(0) 人氣()