如何在SQL查询返回的数组中将Amount从字符串转换为float类型适配Google Charts
问题原因
你之前的写法直接将转换后的值存入索引数组,丢失了Category、Amount的关联键名,导致后续convertDataToChartForm函数读取表头时拿到的是[0,1]而非预期的字段名,因此无法输出符合Google Charts要求的格式。
解决方法
有两种可行方案,推荐第一种,在数据查询阶段就统一处理类型,逻辑更清晰:
方案1:修改getPieChartIncomes中的循环逻辑,保留键名做类型转换
仅修改while循环部分即可,无需改动convertDataToChartForm函数:
while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) { $data[] = [ 'Category' => (string)$row['Category'], 'Amount' => (float)$row['Amount'] ]; }
方案2:在convertDataToChartForm中统一处理类型转换
如果你不想改动查询逻辑,也可以把类型转换放到格式转换函数中:
public static function convertDataToChartForm($data) { $newData = array(); $firstLine = true; foreach ($data as $dataRow) { if ($firstLine) { $newData[] = array_keys($dataRow); $firstLine = false; } $newData[] = [ (string)$dataRow['Category'], (float)$dataRow['Amount'] ]; } return $newData; }
输出验证
修改后json_encode($chartIncomesArray)的输出将符合Google Charts要求,格式为:
[["Category","Amount"],["wynagrodzenie",12.0],["odsetki",50.0]]
内容的提问来源于stack exchange,提问作者Tomasz Nosol
相关产品推荐
相关产品推荐

