挑战?使用php将mysql行转换为非常特定的格式

挑战?使用php将mysql行转换为非常特定的格式,php,highcharts,Php,Highcharts,如何使用如下所示的php格式化sql server行: id company value monthyear 1 companyone 30 january2012 2 companytwo 20 february2012 3 companyone 10 february2012 为此: monthyear: ['january2012', 'febru

如何使用如下所示的php格式化sql server行:

id     company         value      monthyear
1      companyone      30         january2012
2      companytwo      20         february2012
3      companyone      10         february2012
为此:

monthyear: ['january2012', 'february2012']
这是:

company: 'companyone', value: [30, 10]
company: 'companytwo', value: [0, 20]
db中一个月的每个实例合并为一个实例

有两行的company one合并到一个实例中,其中每个值按月份顺序排列。第二公司只有一个实例,它的值定义为0,一个月内没有实例

我得到的最远的结果是二维数组,带有array\u merge\u recursive和一些条件语句,但是我的脑袋开始打结了

SELECT
    company, 
    GROUP_CONCAT(value SEPARATOR ',') AS value, 
    GROUP_CONCAT(monthyear SEPARATOR ',') AS monthyear
FROM
    yourTable
GROUP BY
    company
为您提供一些参考

PHP解决方案:

选择要分组的属性排序(公司)。每当你们遇到一个不同的公司价值观时,环顾一下他们,打开一个新的团队。只要当前行与上一行相同,就向当前公司添加
value
monthyear

即使不进行排序,也可以执行此操作:

while($row = mysql_fetch_assoc($resource))
{
    $values[$row["country"]][] = $row["value"];
    $monthyear[$row["country"]][] = $row["monthyear"];
}
一些输出示例

foreach ($values as $country => $valuesOneCountry)
{
    // each country
    var_dump($country);

    foreach ($valuesOneCountry as $i => $value)
    {
        // value, monthyear for each original row

        var_dump($value, $monthyear[$country][$i]);
    }
}
面向对象编程的优雅方式:

class Tuple
{
    public $country, $values, $monthyears;

    public function __construct($country, $values = array(), $monthyears = array())
    {
        $this->country = $country;
        $this->values = $value;
        $this->monthyears = $monthyears;
    }
}

$tuples = array();
while($row = mysql_fetch_assoc($resource))
{
    if (!isset($tuples[$row["country"]]))
         $tuples[$row["country"]] = new Tuple($row["country"]);

    // save reference for easy access        
    $tuple = $tuples[$row["country"]];

    // or some method like $tuple->addValue($row["value"]);
    $tuple->values[] = $row["value"];
    $tuple->monthyears[] = $row["monthyear"];
}

var_dump($tuples);

我在原稿中写到是mysql,但实际上我使用的是sql server,我不知道sql server,所以我给出了PHP的路线图。试试这一秒。谢谢这个php肯定是答案的开始,但我实际上如何回应或显示它呢?sqlserver可能就是我结束的地方。@Vytautas我实际上没有,除了一个从循环中创建的简单数组。