0

タイムスタンプの配列に複数の年と月の複数のタイムスタンプがあると仮定すると(たとえば、123456、111222333、2112321321、232234422、1111343222、231111121など)、これらを次の形式に並べ替えます。

2012
    06
    09

2004
    03
    08

2003
    01
    02

これを行う方法はありますか?PHPを使用しています

4

2 に答える 2

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 個のランダムなタイムスタンプの配列を作成して、リストの最初に入力します。

于 2012-06-12T00:07:16.477 に答える
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]);
}

完璧ではありませんが、うまくいきます!

于 2012-06-13T01:10:28.577 に答える