如何根据上次修改的日期回显目录中文本文件的内容?

时间:2015-05-22 16:42:27

标签: php date echo

我创建了一个目录,其中包含以下文件:

  • 的index.php
  • one.txt - 您好
  • two.txt - 确定
  • three.txt - 再见
  • four.txt -

以粗体显示的所有内容都会告诉您这些文本文件包含的内容。

我要做的是将文本文件的所有内容回显到 index.php 页面。因此,当用户访问 index.php 页面时,他们会看到这一点:

  

日期:2015年5月13日
文本文件的内容:您好

     

日期:2015年5月12日
文本文件的内容:确定

     

日期:2015年5月11日
文本文件的内容:再见

     

日期:2015年5月10日
文本文件的内容:酷

从上面可以看出,文本文件的创建日期及其内容都已被回显。此外,它们会根据上次修改的顺序得到回应。

这是我尝试用来实现此目的的代码:

    <?php
    foreach (glob("*.txt") as $filename) {
      echo "Date:"; 
      echo date('d F Y', filemtime($filename)) . 
      "Contents of text file:";
      echo file_get_contents($filename);
     }
    ?>

此代码中发生的是:

  • 目录中的所有文本文件都已选中
  • 对于每个文本文件,它获取其最后修改日期及其包含的回显

此代码的结果是它类似于上面黄色框中可以看到的(这是我想要实现的)但是回显的顺序不是按日期顺序。它得到了这样的回声:

  • 5月13日
  • 5月10日
  • 5月11日
  • 5月12日

我如何制作它以便根据上次修改的日期回显?最新日期位于顶部,最旧日期位于底部?

2 个答案:

答案 0 :(得分:0)

这样做:

<?php
foreach (glob("*.txt") as $filename) {
  $result[date('Ymd', filemtime($filename))]= 
    "Date:". 
    date('d F Y', filemtime($filename)) . 
    "Contents of text file:".
    file_get_contents($filename);
 }
ksort($result);
echo implode("", $result);
?>

答案 1 :(得分:-1)

<?php

foreach (glob("*.txt") as $filename) 
{
    $time = filemtime($filename);
    $files[$filename] = $time;
}

arsort($files);

foreach ($files as $file => $time) 
{
    "Contents of text file:";
    echo file_get_contents($file);
}

?>

修改

感谢格拉维奇的暗示。我更新了脚本,因此文件不会丢失。