0

私はこのような配列を持っています

Array
(
    [interswitch] => Array
        (
            [0] => Array
                (
                    [month] => 8
                    [transactions] => 5
                )

            [1] => Array
                (
                    [month] => 9
                    [transactions] => 1
                )

        )

    [visa] => Array
        (
            [0] => Array
                (
                    [month] => 8
                    [transactions] => 9
                )

        )

)

配列は SQL クエリによって生成されます。SQL クエリはテーブルをクエリし、各月のレコードをカウントします。[月] は暦月を表します。このデータを、この形式のデータを受け入れる HighCharts で使用したい

{name: 'Tokyo',data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1,95.6, 54.4]}

my 配列をより読みやすい配列に変換し、JSON でエンコードして上記の形式に変換する方法これを試しました

$_monthly_gateway_usage = array(
                array(
                    "name"=>"Interswitch",
                    "data"=>$this->parse_monthly_usage_data($monthly_gateway_usage['interswitch'])
                ),
                array(
                    "name"=>"Visa",
                    "data"=>$this->parse_monthly_usage_data($monthly_gateway_usage['visa'])
                )

            );

private function parse_monthly_usage_data($usage_data = array()) {

            $months = array("1","2","3","4","5","6","7","8","9","10","11","12");
            $_d = array();
            foreach ($months as $month) {
                foreach ($usage_data as $key => $d) {
                    if($d['month'] == $month)
                    {
                        $_d[] = $d['transactions'];
                    }
                    else
                    {
                        $_d[] = 0;
                    }
                }
            }

            return $_d;
        }

どんな助けでも大歓迎です

4

1 に答える 1

1

これは短い形式です。ループ インデックスは月に基づいています。

$_d = array();
for($i=1;$i<=12;$i++){
    foreach($usage_data as $v){
        $_d[$i] += ($v['month']==$i) ? $v['transactions'] : 0;
    }
}
于 2012-09-19T12:52:34.820 に答える