1

実現したいことの論理構造またはアイデアがあり、それを配列を使用して PHP でコーディングしたかったのですが、シナリオは次のとおりです。

10ループ/月の発生

月 => 繰り返し

jan => 2
mar => 1
sep => 5
dec => 2

上記のように、10回発生するループがあり、そのループのカウント内で4つの異なる月が記録されており、月(9月)が5回繰り返されたように、特定の月ごとに複数回繰り返される可能性があります. この考え方は、10 回の旅行の記録から、その人が何月に旅行し、その月に何回旅行したかを記録する例と同じです。配列を使用してPHPでこれを構築する方法はありますか? 提案や回答は大歓迎です!

さて、ここで私がやりたかったことは本当のことです。データベースから月のレコードを取得し、データベースから取得した月とそれが繰り返された回数を表示したいと思いました。表示例は次のとおりです。

Jan (2)
Sep (5)

動的にしたかったのですが、データベース レコードに存在しない場合、特定の月は表示されません。

4

1 に答える 1

3

彼は初歩的な周波数分析を行おうとしていると思います。なんらかの方法で日付が配列に入力されていると仮定すると、strtotime()、date()関数を使用してキーを生成し、それらを解析することで続行できます。

まず、ダミーデータを作成します。

// dummy data; unsure of the format, so going with time()-like structure
$dates = array();
for( $i = 0; $i < 10; $i++ ) {
    $dates[] = strtotime(sprintf("%s-%s-2012", rand(1,30), rand(1,12) ));
}

次に、date( "M" ...)で記述された月ごとにキー設定された頻度カウントを実行します。

$freq = array();
foreach( $dates as $timestamp ) {
    // assuming it's all the same year, discover the month
    $month = date("M", $timestamp );

    if( !isset($freq[$month]) ) $freq[$month] = 0;
    $freq[$month]++;
}

この時点で、必要なものに似たものができあがります。

print_r( $freq );

Array
(
    [Sep] => 2
    [Feb] => 2
    [Nov] => 1
    [Dec] => 1
    [Jan] => 2
    [Apr] => 1
    [May] => 1
)

年が異なる場合は、これを何らかの方法で二重結合するか、そうでない場合があります。

于 2012-04-16T19:57:28.940 に答える