readdir сортировка по имени файла, где имя файла является названием месяцев

<?php
$current_dir = "/members/downloads/board-meetings/2014/";    // Full path to directory
$dir = opendir($current_dir);        // Open directory

echo ("");
while ($file = readdir($dir))            // while loop
{
$parts = explode(".", $file);                    // Pull apart the name and     dissect     by     period
if (is_array($parts) && count($parts) > 1) {
$extension = end($parts);        // Set to see last file extension

if ($extension == "pdf" OR $extension == "PDF")    // PDF DOCS by extention
echo "<li class=\"pdf\"><strong><a href=\"/members/downloads/board-meetings    /$file\" class=\"underline\" target=\"_blank\">$file</a></strong></li>";    //     If so, echo it out!
}
}
echo "<br>";
closedir($dir);    // Close the directory
?>

Я надеялся обратиться за помощью к эксперту. Этот код прекрасно работает, за исключением того, что этот сайт должен перечислить имена файлов по месяцам. Они названы как: январь.pdf, февраль.pdf и т. Д … И они должны быть перечислены в обратном ежемесячном порядке. Итак, декабрь.pdf, затем ноябрь.pdf и т. Д. И я получаю: October.pdf November.pdf April.pdf — далеко от базы. Любые идеи будут чрезвычайно признательны.

0

Решение

Во время первой итерации вычислите порядковый номер месяца и создайте массив, в котором месяц хранится в ключах, а имя файла — в значениях.

$current_dir = "/members/downloads/board-meetings/2014/";    // Full path to directory
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
$dir = opendir($current_dir);        // Open directory
$files = array();

while ($file = readdir($dir)) {
$extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$month = array_search(substr($file, 0, 3), $months);

if ($extension == 'pdf') {
$files[$month] = $file;
}
}

Затем вы добавляете шаг сортировки.

krsort($files);

Наконец, итерируйте отсортированный массив:

foreach ($files as $file) {
echo "<li class=\"pdf\"><strong><a href=\"/members/downloads/board-meetings    /$file\" class=\"underline\" target=\"_blank\">$file</a></strong></li>";    //     If so, echo it out!
}

echo "<br>";
closedir($dir);    // Close the directory
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]