试图从MySQL数据库中读取一个浮点值,并将其编码为JSON,以便与谷歌图表一起使用


Trying to read a float value from MySQL database and encode to JSON to be used with a Google chart

我已经做了一些这样的例子,我从数据库中读取数据,然后将其编码为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。

若要将字符串强制转换为float,必须使用任何强制转换运算符。

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

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

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