<div style="width: 49%; height: 300px; float: left; padding-top: 10px; ">
<h2><img src="downloads/general.png"></h2>
<h1>General Downloads</h1>
<?php
$Dirdownloads = opendir('downloads/general');
while (false !== ($file = readdir($Dirdownloads))) {
if ($file != "." && $file != "..") {
$files[] = array(
filemtime('downloads/general/'.$file),
$file
);
}
}
closedir($Dirdownloads);
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
foreach ($files as $file) {
echo '<a href="downloads/general/'.$file[1].'">'.$file[1].'</a><br />';
}
?>
</div>
<div style="width: 49%; height: 300px; float: right; padding-top: 10px; ">
<h2><img src="downloads/conference.jpg"></h2>
<h1>Conference Information</h1>
<?php
$Dirdownloads = opendir('downloads/conference');
while (false !== ($file = readdir($Dirdownloads))) {
if ($file != "." && $file != "..") {
$files[] = array(
filemtime('downloads/conference/'.$file),
$file
);
}
}
closedir($Dirdownloads);
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
foreach ($files as $file) {
echo '<a href="downloads/conference/'.$file[1].'">'.$file[1].'</a><br />';
}
?>
</div>
<div style="width: 49%; height: 300px; float: left; padding-top: 10px; ">
<h2><img src="downloads/newsletter.jpg"></h2>
<h1>Newsletters</h1>
<?php
$Dirdownloads=opendir('downloads/newsletters');
while (false !== ($file = readdir($Dirdownloads))) {
if($file != "." && $file != ".."){
echo '<a href="downloads/newsletters/'.$file.'">'.$file.'</a><br />';
}
}
closedir($Dirdownloads);
?>
</div>
<div style="width: 49%; height: 300px; float: right; padding-top: 10px; ">
<h2><img src="downloads/calendar.png"></h2>
<h1>Calendar</h1>
<?php
$Dirdownloads=opendir('downloads/calendars');
while (false !== ($file = readdir($Dirdownloads))) {
if($file != "." && $file != ".."){
echo '<a href="downloads/calendars/'.$file.'">'.$file.'</a><br />';
}
}
closedir($Dirdownloads);
?>
</div>
代码是否显示某个文件夹中的所有文件,并允许您下载它们。它们目前按名称排列,我想先安排最新的......帮助?
答案 0 :(得分:1)
请注意:http://us2.php.net/manual/en/function.filemtime.php
基本上组成这样的2D数组:
阵列:
[0]文件 [0]的时间
[1]的文件 [1]时间
[2]的文件 [2]时间
...
依此类推,使用filemtime()返回的时间是UNIX格式。因此,您可以轻松创建一个循环,按“时间”
对列表进行排序答案 1 :(得分:1)
收集数组中的文件,按创建日期对其进行排序,然后打印出来:
$dir = 'downloads/general';
$Dirdownloads = opendir($dir);
while (false !== ($file = readdir($Dirdownloads))) {
if ($file != "." && $file != "..") {
$files[] = array(
filectime($dir.'/'.$file),
$file
);
}
}
closedir($Dirdownloads);
// sort files by creation time
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
// print the files
foreach ($files as $file) {
echo '<a href="'.$dir.'/'.$file[1].'">'.$file[1].'</a><br />';
}
编辑由于您希望多次使用该算法,因此函数可能会有所帮助:
function getFilesByCreationDate($dir) {
$dir = rtrim($dir, '/');
$handler = opendir($dir);
while (false !== ($file = readdir($handler))) {
if ($file != "." && $file != "..") {
$files[] = array(
filectime($dir.'/'.$file),
$file
);
}
}
closedir($handler);
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
foreach ($files as &$file) {
$file = $file[1];
}
return $files;
}
然后你使用这个函数:
$dir = 'downloads/general';
$files = getFilesByCreationDate($dir);
foreach ($files as $file) {
echo '<a href="'.$dir.'/'.$file.'">'.$file.'</a><br />';
}
答案 2 :(得分:0)
如果您的文件列表足够小,您实际上可以将它们读入数组,我会做的是将它们读入所述数组,然后使用usort
和{{3}的自定义比较函数他们想知道哪个文件更新。
usort
的参数是数组本身,以及一个回调,它指定一个函数,它本身接收数组的两个元素作为参数,如果第一个参数小于第二个参数,则返回负数,如果是,则返回0如果第一个更大,则相等或正数。
答案 3 :(得分:0)
你必须:
filemtime
获取)usort
)例如,首先获取文件列表:
$files = array();
$dir = dirname(__FILE__);
$Dirdownloads=opendir($dir);
while (false !== ($file = readdir($Dirdownloads))) {
if($file != "." && $file != ".."){
$files[] = array(
'name' => $file,
'date' => filemtime($dir . '/' . $file),
);
}
}
closedir($Dirdownloads);
请注意,对于每个文件,我都有一个包含“name
”和“date
”的数组。
然后,对它们进行排序:
usort($files, 'my_sort_function');
并且,基于“date
”字段比较文件的排序功能:
function my_sort_function($a, $b) {
if ($a['date'] == $b['date']) {
return 0;
}
return ($a['date'] > $b['date']) ? -1 : 1;
}
有了这个,$file
数组应该包含你想要的东西:-)
根据您想要的顺序,您将在排序功能中使用>
或<
。
由您来迭代该列表,以显示链接!