私は毎月のゲームでアイテムの流通に関する統計を計算しています。PHPでの厄介な報告
私はこのようなテーブルを持っている:
Date itemname quantity avg. price
Mar-2012 x 10 3.45
Mar-2012 y 12 4.66
Apr-2012 x 23 4.56
Apr-2012 y 9 4.6
PHPで私は配列を作成し、最後の6ヶ月間次のレポートを表示するテーブルを作成できますか?
Mar-2012 Apr-2012
quantity avg_price quantity avg_price
x 10 3.45 23 4.56
y 12 4.66 9 4.6
このようなレポートを作成することはできません。どんな助け?
おかげ
見つかり溶液; PHPで簡単な方法があるかどうかを知りたかったのです。私はいくつかの論理を適用しなければならないことを理解しました。ソリューションフォロー(Kohanaの2.xのコード):
コントローラー:
$db = Database::instance();
$months = $db -> query("select distinct from_unixtime(timestamp, '%m-%Y') month
from stats_items
where timestamp >= (unix_timestamp() - (6 * 30 * 24 * 3600)) order by timestamp asc") -> as_array();
$res = ORM::factory('stats_item') -> find_all();
foreach ($res as $r)
{
$stats[$r->name][date('M-Y', $r -> timestamp)]['total'] = $r -> total;
$db = Database::instance();
$months = $db -> query("select distinct from_unixtime(timestamp, '%m-%Y') month
from stats_items where timestamp >= (unix_timestamp() - (6 * 30 * 24 * 3600)) order by timestamp asc") -> as_array();
$res = ORM::factory('stats_item') -> find_all();
foreach ($res as $r)
{
$stats[$r->name][date('M-Y', $r -> timestamp)]['total'] = $r -> total;
$stats[$r->name][date('M-Y', $r -> timestamp)]['avg_price'] = $r -> avg_price;
}
$view->months = $months;
$view->stats_items = $stats;stats[$r->name][date('M-Y', $r -> timestamp)]['avg_price'] = $r -> avg_price;
}
$view->months = $months;
$view->stats_items = $stats;
ビュー:
<table>
<?php
echo "<tr><td width='20%'></td>";
foreach ($months as $month)
echo "<td colspan='2' style='text-align:center' width='20%'>" . $month -> month . '</td>' ;
echo '</tr>';
echo '<tr>';
echo '<td>Item</td>';
foreach ($months as $month)
echo "<td>Total</td><td>Avg Price</td>";
echo '</tr>';
$i=0;
foreach ($stats_items as $key => $value)
{
$class = ($i % 2 == 0) ? 'alternaterow' : '' ;
echo "<tr class='$class'>";
echo '<td>'. kohana::lang($key) . '</td>' ;
foreach ($value as $key2 => $value2)
{
echo "<td class='tright'>".$value2['total'].'</td>';
echo "<td class='tright'>".$value2['avg_price'].'</td>';
}
echo '</tr>';
$i++;
}
?>
個人的に
あなたは配列でこれを持っている場合は、過去6ヶ月間に発生した行を識別することができますか?それが最初のステップです。その後、数量を合計して値段を加算し、行数で割ります。 (これを行ってコードをここに貼り付ける - 私たちはあなたにいくつかの指摘を与えるだろう)。 – halfer
これは、少しのロジックが必要です。多次元配列()のデータを再計算するのは簡単だろうと思う。正確にあなたはどこに苦しんでいますか? – FMCorz
こんにちはladiesMan217、私はどのように質問を受け入れることができますか?質問を受け入れるためのボタンが表示されません... – Sunchaser