数组中的图形表示逻辑[关闭]

问题描述 投票:0回答:2

从数据库值生成的数组输出。

Array ( [0] => Array ( [seldate] => 2019-04-28 [count] => 268 ) 
        [1] => Array ( [seldate] => 2019-04-29 [count] => 366 ) 
        [2] => Array ( [seldate] => 2019-04-30 [count] => 85 ) 
        [3] => Array ( [seldate] => 2019-04-28 [count] => 93 ) 
        [4] => Array ( [seldate] => 2019-04-29 [count] => 82 ) 
        [5] => Array ( [seldate] => 2019-04-30 [count] => 31 ) 
        [6] => Array ( [seldate] => 2019-04-28 [count] => 44 ) 
        [7] => Array ( [seldate] => 2019-04-29 [count] => 44 ) 
        [8] => Array ( [seldate] => 2019-04-30 [count] => 22 ) )

我需要为google LineChart创建以上数组的下面的字符串输出。

"['2019-04-28',  268, 93, 44],
['2019-04-29',  366, 82, 44],
['2019-04-30',  85, 31, 22]"

请帮助创建PHP代码逻辑。

php arrays string google-visualization google-chartwrapper
2个回答
2
投票

首先准备您的数组作为关键日期,值是值。 然后再次循环它并将行写入具有内爆值的新数组。

最后在逗号和新行上输出带有内爆的行。

foreach($rows as $r){
    $dates[$r['seldate']][] = $r['count'];
}

foreach($dates as $date => $vals){
    $lines[] = "['" . $date . "', " . implode(", ", $vals) . "]";
}

echo implode(",\n", $lines);

输出:

['2019-04-28', 268, 93],
['2019-04-29', 366],
['2019-04-30', 85]

https://3v4l.org/14smE


0
投票

您可以使用array_walk遍历数组,如下所示

$result = [];
array_walk($arr, function($item) use(&$result){
    if(empty($result[$item['seldate']])){ // if empty add date and count for initialisation
        $result[$item['seldate']] = [$item['seldate'], $item['count']]; 
    }else{
        $result[$item['seldate']][] = $item['count'];   // just append value to same key as date as we are grouping it by date
    }
});
$result = array_values($result); // to remove date keys
print_r($result);

产量

Array
(
    [0] => Array
        (
            [0] => 2019-04-28
            [1] => 268
            [2] => 93
            [3] => 44
        )

    [1] => Array
        (
            [0] => 2019-04-29
            [1] => 366
            [2] => 82
            [3] => 44
        )

    [2] => Array
        (
            [0] => 2019-04-30
            [1] => 85
            [2] => 31
            [3] => 22
        )

)

Demo

注意:如果要将此数据用于折线图,请输出以上qazxsw poi。

© www.soinside.com 2019 - 2024. All rights reserved.