我已经做了一些这样的例子,我从数据库中读取数据,然后将其编码为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。当我重命名它时,浮点值起作用。