尝试从MySQL数据库中读取浮点值并编码为JSON以与Google图表一起使用

时间:2013-11-27 15:35:21

标签: php json google-visualization

我做了一些这样的例子,我从数据库读取数据,然后将其编码为JSON,以便我可以在谷歌图表中使用它。我知道PDO总是返回一个字符串,直到现在我一直在能够把它作为一个工作正常的int,但现在我有一个浮动的列,我似乎无法使它工作。我已经尝试了float_val和其他一些东西,但没有运气。我试图浮动的值是列名称Load_times并包含诸如0.11,0.966,0.1087等值。任何人都可以帮忙吗?

由于

这是使用

的代码
$st = $db->prepare ( "SELECT Chart_Type, SUM(Load_Time) from Timing group by Chart_Type;
                " );

    $st->execute ();

    $rows = array ();
    $flag = true;
    $table = array ();
    $table ['cols'] = array (

            // Labels for chart, these represent the column titles
            array (
                    'label' => 'Chart_Type',
                    'type' => 'string' 
            ),
            array (
                    'label' => 'Load_Time',
                    'type' => 'number' 
            ) 
    )
    ;

    $rows = array ();
    while ( $r = $st->fetch ( PDO::FETCH_ASSOC ) ) {

        $temp = array ();

        $temp [] = array (
                'v' => ( string ) $r ['Chart_Type'] 
        );

        // Values of each slice

        $temp [] = array (
                'v' => ( float ) $r ['Load_Time'] 

            );

        $rows [] = array (
                'c' => $temp 
        );
    }

    $table ['rows'] = $rows;
    $jsonTable = json_encode ( $table );
    return $jsonTable;
}

打印时,持有$ jsontable的值显示“v”:0。

2 个答案:

答案 0 :(得分:0)

要将字符串转换为float,您可以使用任何转换运算符。

这个数字直接来自你的例子:

$str = '0.1087';
$float = (float)$str;
var_dump($float);
//float(0.1087)

答案 1 :(得分:0)

解决了它。在SQL查询中我有SUM(加载时间),但是当对数组中的值进行排序时,我只有Load_Times。当我重命名它时,浮点值有效。