使用PHP按日期/时间排序文件夹内容?

时间:2015-03-25 13:19:18

标签: php sorting

我尝试按日期/时间对文件夹的内容进行排序。 我的代码bellow正确地获取了所有内容,但它们遍布整个地方,并且它们没有按日期/时间排序。

我的代码:

if(isset($_GET['dir'])) {
    $directory = $_GET['dir'];

    $dir = "".$directory."";
    $files = scandir($dir);
    //rsort($files);

    $TIMEANDATE = date("F d Y h:i A");

    foreach ($files as $file) {
        $date = filemtime(''.$dir.'/'.$file.'');
        if ($file != '.' && $file != '..') {
            array_multisort(array_map('filemtime', $file), SORT_ASC, $file); 
            $filesize = human_filesize(filesize(''.$dir.'/'.$file.''));
            $all_doc .= "<tr>
                            <td><input  type='checkbox'/></td>
                            <td>".$fileExt."&nbsp;<a class='defaults'  href='" . $dir ."/". $file . "'>". $file ."</a>&nbsp;&nbsp;<a href=''><i title='Move' class='fa fa-refresh'></i></a>&nbsp;&nbsp;
                                <a href='folder.php?del=" . $dir ."/". $file . "'><i title='Delete' class='fa fa-times'></i></a>
                            </td>           
                            <td>Status</td>
                            <td>".date('F d Y h:i A', $date)."</td>
                            <td>".$filesize."</td>
                            </td>
                        </tr>";
           $i++;
        }

    }
}

我尝试了这行代码,但它并没有对它们进行排序:

array_multisort(array_map('filemtime', $file), SORT_ASC, $file); 

有人可以就此提出建议吗?

任何帮助将不胜感激。

编辑:此问题在其他帖子中没有答案,因为代码明显不同,我无法更改我的代码以反映其他人员在其他帖子上的代码。所以我需要使用自己的代码。

2 个答案:

答案 0 :(得分:1)

这应该适合你:

(你的代码中有一些东西,你不能告诉我们他们做了什么,所以我修改了它以便这段代码可以工作。这里我只是用glob()得到所有文件然后我排序我使用usort()进行的最后修改filemtime(),然后我只打印文件)

<?php

    if(isset($_GET['dir'])) {
        $dir = $_GET['dir'];
        $files = glob($dir . "/*.*");

        usort($files, function($a, $b){
            if(filemtime($a) == filemtime($b))
                return 0;
            return filemtime($a) > filemtime($b) ? 1 : -1;
        });

        echo "<table border='1'>";

        foreach($files as $file) {
        ?>  
        <tr>
            <td><input type="checkbox" /></td>
            <td><?php echo pathinfo($file)["extension"]; ?><a class="defaults"  href="<?php echo $file;?>"><?php echo basename($file);?></a><i title="Move" class="fa fa-refresh"></i><a href="folder.php?del=<?php echo $file; ?>"><i title="Delete" class="fa fa-times"></i></a></td>           
            <td>Status</td>
            <td><?php echo date("F d Y h:i A", filemtime($file));?></td>
            <td><?php echo filesize($file);?></td>  
        </tr>
        <?php
        }

        echo "</table>";

    }

?>

答案 1 :(得分:-1)

$files = glob('/bla/bla/*');
if (!$files) {
    $files = array();
}

foreach ($files as & $file) {
    $file = array(
        'modified_by' => filemtime($file),
        'file_name'   => $file
    );
}
array_multisort($files);
var_dump($files);