将时间戳月份/年列为PHP中的博客存档

时间:2012-06-11 23:55:47

标签: php unix-timestamp

假设我在时间戳数组中有多个年份和月份的多个时间戳(例如123456,111222333,2112321321,232234422,1114343222,231111211等),我想将它们排序为以下格式:

2012
    06
    09

2004
    03
    08

2003
    01
    02

有没有办法做到这一点?我正在使用PHP

2 个答案:

答案 0 :(得分:2)

你可以这样做。

看看这是否能让你开始;它是不完整的,但照顾大部分。只需添加一些,它应该如你所愿。

<?php

$timestamps = array();

for ($i = 0; $i < 100; ++$i) {
    $ts = mktime(rand(0, 23), rand(0, 59), rand(0, 59), rand(1, 12), rand(1, 31), rand(2000, 2012));

    $timestamps[] = $ts;
}

sort($timestamps);

$lastYear = null;

echo "<ul>\n";

foreach($timestamps as $ts) {
    $year = date('Y', $ts);

    if ($year != $lastYear) {
        if ($lastYear != null) {
            echo "</ul>\n";
        }

        $lastYear = $year;

        echo "<li>$year<ul>\n";
    }

    echo "<li>" . date('m-d', $ts) . "</li>\n";
}

echo "</ul></ul>";

我创建了一个包含100个随机时间戳的数组,以便在开头填充列表。

答案 1 :(得分:0)

我找到了解决方案:

foreach($timestamps as $time){
    $year = date('Y', $time);
    $month = date('m', $time);
    if(!$ts_arr[$year]){
        $ts_arr[$year] = array();
    }
    array_push($ts_arr[$year], $month);
    $ts_arr[$year] = array_unique($ts_arr[$year]);
}

这不完美,但它有效!