使用 PHP 格式化 Google 图表数据

我正在准备来自 Google Charts 的数据,但无法为 Google Chart 创建格式化数据数组。


我有以下格式的对象数组:


[

    {

        "total_amount": 6572.67,

        "o_date": "2020-06-01",

        "storeName": "Store1"

    },

    {

        "total_amount": 314.21,

        "o_date": "2020-06-01",

        "storeName": "Store2"

    },

    {

        "total_amount": 5550.34,

        "o_date": "2020-06-02",

        "storeName": "Store1"

    },

    {

        "total_amount": 461.87,

        "o_date": "2020-06-02",

        "storeName": "Store2"

    },

    {

        "total_amount": 6471.37,

        "o_date": "2020-06-03",

        "storeName": "Store1"

    },

    {

        "total_amount": 547.99,

        "o_date": "2020-06-03",

        "storeName": "Store2"

    },

]

Google Chart 需要以下格式的数据:


['Store', 'Store1', 'Store2', { role: 'annotation' } ],

['2020-06-01', 6572.67, 314.21, ''],

['2020-06-02', 5550.34, 461.87, ''],

['2020-06-03', 6471.37, 547.99, '']

我尝试了不同的方法在 foreach 循环中创建新数组,但无法格式化该数组。有人可以建议我正确的方法吗?谢谢。


万千封印
浏览 113回答 1
1回答

慕田峪7331174

有点斗志旺盛,但这应该可以了。$chart 变量将保存您要查找的内容。    // Assuming data is the "array for object in this format"    $dates = array_reduce($data, function ($dates, $record) {        if (!in_array($record['o_date']), $dates) {            $dates[] = $record['o_date'];        }        return $dates;    }, []);    $stores = array_reduce($data, function ($stores, $record) {        if (!in_array($record['storeName'], $stores)) {                    $stores[] = $record['storeName'];        }        return $stores;    }, []);        $headers = $stores;    $headers[] = [ 'role' => 'annotation' ])    $chart = [ $headers ];    foreach ($dates as $date) {        $datapoint = [ $date ];        foreach ($stores as $store) {            $total = 0;            foreach ($data as $record) {                $isStore = $record['storeName'] === $store;                $isDate = $record['o_date'] === $date;                if($isStore && $isDate) {                    $total += (float) $record['total_amount'];               }            }            $datapoint[] = $total;        }                    $chart[] = $datapoint;    }
打开App,查看更多内容
随时随地看视频慕课网APP