首页 > 解决方案 > 如何将多个数组合并为一个数组并按日期对所有数组的文件进行排序?

问题描述

我有一个函数可以在子文件夹中查找文件并按文件夹的顺序列出它们。如何将所有文件合并到一个数组中并按文件创建日期对它们进行排序?

许多子文件夹位于“post”文件夹中。许多文件位于子文件夹中。

/posts
   /subfolder 1
      file 1 (created 01/01/19)
      file 3 (created 03/03/19)
   /subfolder 2
      file 2 (created 02/02/19)
      file 4 (created 04/04/19)
   ...

GetPostList 函数在一个子文件夹中创建一组文件并输出它们(从文件中设置变量)。

function GetPostList($dir) {
    $postlist = '';
    $postmarkup = '';
    $path = dirname(__FILE__) . '/posts/' . $dir;
    $pages = array();
    $handle = opendir($path);
    if ($handle != false)
    {
        while (($file = readdir($handle)) !== false)
        {
            if (is_file($path . $file))
            {
                $i = filemtime($path . $file) . ',' . $file;
                $pages[$i] = $file;
            }
        }
        closedir($handle);
    }
    krsort($pages);
    foreach ($pages as $i => $page)
    {
        $title = GetContent($page, 'title', $dir);
        $date = GetContent($page, 'date', $dir);
        $caterory = GetContent($page, 'category', $dir);
        $fileaddon = strpos($page, ".");
        $filename = substr($page, 0, $fileaddon);
        $posturl = $dir.$filename;
        $postmarkup .= '
            <p>
                <a href="'.$posturl.'" title="'.$title.'">
                    '.$title.'<br>
                    <span>'.$caterory.'</span> | <span>'.$date.'</span>
                </a>
            </p>
        ';
    }
    if (empty($pages))
    $postlist .= '<p>Empty!</p>';
    $postlist .= $postmarkup;
    return $postlist;
}

GetAllPost 函数在所有子文件夹中创建了一个文件数组,但输出分开(从第一个子文件夹,然后从第二个子文件夹......):

function GetAllPost()
{
    $path = dirname(__FILE__) . '/posts/';
    $readdirectory = dir($path);
    while(false !== ($dir = $readdirectory->read()))
    {
        if($dir != "." && $dir != "..")
        {
            $subpages = GetPostList($dir.'/');
            echo $subpages;
        }
    }
}

输出:

file 1 (created 01/01/19)
file 3 (created 03/03/19)
file 2 (created 02/02/19)
file 4 (created 04/04/19)
...

如何按创建日期合并和排序?

file 1 (created 01/01/19)
file 2 (created 02/02/19)
file 3 (created 03/03/19)
file 4 (created 04/04/19)
...

标签: php

解决方案


推荐阅读