0
私はこの時点で立ち往生しています。私は、年間の顧客行動を予測するグラフを作成しようとしています。 2013年まで。私はデータベースを照会し、クエリされた年の12ヶ月の配列を返す関数を作成し、その関数を次の年にコードを修正することを避けるために何年ものレコードに渡します。私の問題は、グラフに渡すデータがループ全体のデータを描画し、レコードの新しい年が始まるときに新しいデータセットまたは2行目を作成する必要があることです。私の配列は次のようになります。新しいデータセットまたは新しい行を追加する方法アレイ値から
...
11 =>
array (size=3)
'year' => int 2013
'month' => string 'Dec' (length=3)
'total' => int 33
array (size=12)
0 =>
array (size=3)
'year' => int 2014
'month' => string 'Jan' (length=3)
'total' => int 41
...
、これは私がこれまでしているコードです:
:$table['cols'] = array(
array('label' => 'Month', 'type' => 'string'),
array('label' => '2013', 'type' => 'number'),
array('label' => '2014', 'type' => 'number'),
array('label' => '2015', 'type' => 'number'),
array('label' => '2016', 'type' => 'number')
);
$rows_graph = array();
$i = 0;
// loop for the customers list
while ($rows = mysqli_fetch_object($customers)) {
echo 'Loop1 - ' . $rows->channel . '<br /><br />';
// next loop for each year of records
foreach ($years as $items) {
echo 'Year: '.$items['year'].'<br />';
// function(dbcon,year,customer) return an array of 12 months (ex. year => 2013, month => Jan, total = 10)
// with the records per month for the current customer in that year.
$data = chart_values($dbcon, $items['year'], $rows->channel);
var_dump($data);
// now i loop for each month
foreach ($data as $key => $val) {
// var_dump($test);
// echo $val['year'] . ' - ' .$val['month'] . ' - ' . $val['total'] . '<br />';
$temp = array();
$temp[] = array('v' => (string)$val['month']);
// Values of each line
$temp[] = array('v' => (int)$val['total']);
$rows_graph[] = array('c' => $temp);
}
}
$table['rows'] = $rows_graph;
$jsonTable = json_encode($table);
echo $jsonTable;
//////////////////////// graphic //////////////////////////
、そして得られたグラフは、すべてこのような1行で表示します
そして、私はこのようなグラフを作成したいと思います(私自身のデータで、年数は12ヶ月、合計は月):
私はいつもトラブルPHPを読んを持っていますが、あなたはしています間違いなく1つの列にすべての値を取得します。凡例のすべてのシリーズを取得しているため、列が正しく設定されています。私は実際には、あなたが実際にその年の値を右の列に入れることを確認することをチェックしていないと思っています。軸は日付であるため、日付列はすべての年のデータを表示する必要があります。すなわち、 2013年1月の日付行には2014年1月、2015年および2016年があります。これを行う別の方法がありますが、それはおそらくあなたにとって価値があるよりも複雑です。 – nbering
主な問題は、ループ内で配列を作成するときに翌年に再びJanから再起動する方法だと思いますが、実際には次の合計値を追加して2番目の列を埋め込むことができますが、両方とも同じ曲線を示しています – Aramil
SQLデータベースを使用している場合は、必要な形式でデータベースからデータを取得するために、サブクエリまたは結合を使用しています。それはデータベースの複雑さを軽減しますが、データベースはデータを結合し、そのような生の数字を処理するために最適化されています。私はJavaScript側でこれを行ういくつかの方法を考えることができますが、私は実際にはサーバー側であなたを助けることができるPHPを知らないだけです。 – nbering