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

如何将SQL SUM查询结果转为纯数值JSON数组及解决json_decode返回NULL问题

解决方案:调整JSON格式与修复json_decode返回NULL问题

一、将结果转为纯数值数组[10000, 51221, 2351]

你当前得到的是包含键值对的对象数组,核心原因是SQL查询的结果保留了聚合函数的列名,且PHP直接把整行数据加入了数组。可以从两个层面修改:

方法1:修改SQL语句,给聚合结果起别名(更清晰)

给SUM(sales)指定一个简洁的别名,方便PHP精准提取数值:

$sql = "SELECT SUM(sales) AS total_sales FROM sales ..."; // 替换...为你的查询条件
$result = mysqli_query($connection, $sql);
$output = array();
foreach($result as $row) {
    // 将字符串类型的数值转为整数,再加入数组(如需保留小数可改用(float))
    $output[] = (int) $row['total_sales'];
}
$json = json_encode($output);
echo $json;

方法2:不修改SQL,直接提取行中的唯一值

如果不想调整SQL,可以用reset()函数取出每行的第一个值(因为你的查询仅返回一列),再转成数值类型:

$sql = "SELECT SUM(sales) from sales ...";
$result = mysqli_query($connection, $sql);
$output = array();
foreach($result as $row) {
    // 提取当前行的唯一值并转为整数
    $output[] = (int) reset($row);
}
$json = json_encode($output);
echo $json;

这样处理后,json_encode就会输出你想要的纯数值数组格式。

二、修复json_decode返回NULL的问题

json_decode返回NULL通常是因为JSON字符串无效,或者解码参数使用不当。可以按以下步骤排查修复:

  1. 检查JSON有效性:
    先输出$json确认内容是否正确,然后用json_last_error_msg()查看具体错误原因:

    $json = json_encode($output);
    echo $json;
    // 检查解码错误
    $decoded = json_decode($json);
    if($decoded === NULL) {
        echo "解码错误:" . json_last_error_msg();
    }
    

    常见错误比如JSON包含非法字符、编码问题(比如带BOM的UTF-8)。

  2. 正确使用json_decode参数:
    如果你想解码成关联数组,必须传入第二个参数true,否则默认返回对象;另外注意:你之前用decode($output)是错误的——$output是PHP数组,不是JSON字符串,应该解码你生成的$json变量:

    // 解码为关联数组(推荐)
    $decodedArray = json_decode($json, true);
    // 解码为对象
    $decodedObj = json_decode($json);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:58