首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPtoPHP数组用于phplot

PHPtoPHP数组用于phplot
EN

Stack Overflow用户
提问于 2016-05-23 23:36:01
回答 1查看 599关注 0票数 1

我有以下查询。

代码语言:javascript
复制
SELECT day, price, source FROM prices WHERE item_id = 5

桌子看上去像这样

代码语言:javascript
复制
date | price | source
1    | 1     | source_1
2    | 2     | source_2
3    | 9     | source_1
3    | 7     | source_2
3    | 3     | source_3

注意,并非每个源都有每个“日期”的数据。有些日期有多种来源。这是一个由PHPlot提供的价格比较图。

PHPlot的数组必须是这样的。

代码语言:javascript
复制
$data = array(
 array('1', 1, 4, 2),
 array('2', 5, 7, 1),
 array('3', 7, '', 6),
 array('4', 8, 1, 4),
 array('5', 2, 4, 6),
 array('6', '', 4, 5),
 array('7', 7, 2, 3));

注意,某些源缺少一些数据。这是故意的。

因此,我需要做的(我认为)是分组的数据以某种方式。

蛋糕上最后的糖霜是数据标签..。

代码语言:javascript
复制
$labels = array('source_1', 'source_2', 'source_3');

我很惭愧地承认,这件事在我的脑海中占据了相当大的位置,但我很想学习。我只有一个“来源”才能很好地完成这个任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 00:33:20

好的..。若要生成数据数组,请尝试以下查询:

代码语言:javascript
复制
SELECT `day`, `price`, `source` FROM prices WHERE `item_id` = 5 ORDER BY `day`, `source`

然后从该结果中获取一个关联数组,并将其传递给以下函数:

代码语言:javascript
复制
function makeArray($rows) {
    $rowCount = 0;
    $finalArray = array();
    $legendArray = array();

    foreach($rows as $row) {
        $thisDate = (int)$row['day'];
        if ($thisDate > $rowCount) {
            $rowCount++;
            $finalArray[$rowCount-1] = array($thisDate, '', '', '');
        }
        if (!in_array($row['source'], $legendArray)) {
            $legendArray[] = $row['source'];
        }
        $thisIndex = 1;
        switch($row['source']) {
            case 'source_1':
                $thisIndex = 1;
                break;
            case 'source_2':
                $thisIndex = 2;
                break;
            case 'source_3':
                $thisIndex = 3;
                break;
        }
        $finalArray[$rowCount-1][$thisIndex] = $row['price'];
    }
    return array($legendArray, $finalArray);
}

使用示例数据,下面是print_r()‘处理返回数组时的输出:

代码语言:javascript
复制
Array 
    (
        [0] => Array
            (
                Array 
                (
                    [0] => Array
                        (
                            [0] => 1
                            [1] => 1
                            [2] => 
                            [3] => 
                        )

                    [1] => Array
                        (
                            [0] => 2
                            [1] => 
                            [2] => 2
                            [3] => 
                        )

                    [2] => Array
                        (
                            [0] => 3
                            [1] => 9
                            [2] => 7
                            [3] => 3
                        )

                )
            )

        [1] => Array
            (
                [0] => 'source_1'
                [1] => 'source_2'
                [2] => 'source_3'
            )
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37402185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档