将2D PHP数组转换为2D Json对象以在图形上绘图

时间:2015-06-01 09:52:54

标签: javascript php mysql arrays json

我几周以来一直在处理这段代码,而且我真的无法解决我的问题。我会尝试深入解释我的代码。

我从MySQL数据库中获取值。使用下面的代码,我能够创建一个2D PHP数组:

        for ($i=2, $k=2; $i<11, $k<11; $i++, $k++) {
            $roe_array[] = array( $date_y[$i] => $roe[$k]);
        }

此代码的输出如下

Array
(
    [0] => Array
        (
            [2006] => 13.83
        )

    [1] => Array
        (
            [2007] => 16.43
        )

    [2] => Array
        (
            [2008] => 14.89
        )

    [3] => Array
        (
            [2009] => 18.92
        )

    [4] => Array
        (
            [2010] => 22.84
        )

    [5] => Array
        (
            [2011] => 27.06
        )

    [6] => Array
        (
            [2012] => 28.54
        )

    [7] => Array
        (
            [2013] => 19.34
        )

    [8] => Array
        (
            [2014] => 18.01
        )

)

所以,我在Json中转换了2D PHP数组

$roe_enc = json_encode( $roe_array );

输出结果为:

[{"2006":"13.83"},{"2007":"16.43"},{"2008":"14.89"},{"2009":"18.92"},{"2010":"22.84"},{"2011":"27.06"},{"2012":"28.54"},{"2013":"19.34"},{"2014":"18.01"}]

考虑到我必须在javascript脚本中绘制它,我想要一个如下对象:

[[2006, 13.83],[2007, 16.43],[2008, 14.89],[2009, 18.92], [2010, 22.84],[2011, 27.06],[2012, 28.54],[2013, 19.34],[2014, 18.01]]

你能帮我解决这个问题吗? 感谢您的支持。

1 个答案:

答案 0 :(得分:1)

现在年份是一个键,您希望它是数组中的值,因此您必须生成一个包含基于0的索引数组而不是键值对的数组。原因是除了基于0的顺序索引之外的任何其他索引都转换为json中的键值对,因为javascript只知道基于0的数组。

为此,您应该将循环更改为:

for ($i=2, $k=2; $i<11, $k<11; $i++, $k++) {
    // add an array with 2 values instead of a key-value pair
    $roe_array[] = array( $date_y[$i], $roe[$k] );
    //                               ^ add 2 elements instead of 1
}