You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何仅将数组内int类型的hour值转为字符串类型

问题场景

配置图表时,data.addColumn ('string', 'hour') 规则要求hour列值必须为字符串类型,但数据库查询返回的hour字段默认是int类型。
原有实现代码如下:

$temp_array = array();
while($row = mysqli_fetch_assoc($result))
{
    $temp_array = array(strval($row["hour"]), $row["min"], $row["max"], $row["Avg"]);
}

运行后输出结果为"["6","30.0","30.0","30.0"],所有元素都被处理为带引号的字符串格式,不符合预期:仅需要第一个hour元素为字符串类型,其余min、max、Avg元素需要保持数值类型。

问题原因
  • mysqli_fetch_assoc 扩展默认会将查询返回的所有字段值都转为字符串类型,不会自动匹配数据库中定义的int、float数值类型,因此哪怕不做任何转换,min、max、Avg字段拿到的也都是字符串值。
  • 原代码循环逻辑有误:每次循环直接对$temp_array整体赋值,会覆盖之前循环存入的行数据,最终只能拿到查询结果的最后一行。
修复方案

对数值类字段手动强制转换为浮点型,同时修正循环的数组追加逻辑,代码如下:

$temp_array = array();
while($row = mysqli_fetch_assoc($result))
{
    // 逐行追加数据,避免覆盖
    $temp_array[] = [
        strval($row["hour"]),  // hour字段强制转为字符串,匹配图表列要求
        (float)$row["min"],    // 温度最小值转为浮点数值类型
        (float)$row["max"],    // 温度最大值转为浮点数值类型
        (float)$row["Avg"]     // 平均温度转为浮点数值类型
    ];
}

修复后再将数组转为JSON格式传给前端,输出结构为["6", 30.0, 30.0, 30.0],完全符合图表的列类型要求。


内容的提问来源于stack exchange,提问作者ArjanG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:48:12