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

如何将MySQL查询结果中的fid、mid字段合并为parents JSON数组

相关术语
  • 关联数组(PHP):PHP中以字符串为键存储键值对的数组类型,是构造输出结构的基础
  • JSON序列化:将服务端的数组/对象转换为JSON格式字符串的过程,对应接口输出数据的最后一步
  • SQL字段别名:SQL查询中为字段或计算结果自定义返回名称的语法
  • 数组变换:对原始查询结果数组做新增、删除、修改字段的操作
  • 空值兼容处理:对数据库返回的NULL值做过滤或转换的逻辑,避免输出不符合预期的无效值
需要学习的核心内容

1. PHP基础数组操作

你需要掌握以下基础操作:

  • 给数组新增自定义键值对的方法,用来新增parents字段
  • unset()函数的使用,用来删除输出结果中不需要的原始fid、mid字段
  • 基础的数组过滤逻辑,可以根据业务需求决定是否要把NULL值的fid/mid过滤掉,不放入parents数组

2. PHP JSON处理函数

  • 掌握json_encode()函数的使用,以及JSON_UNESCAPED_UNICODE、JSON_NUMERIC_CHECK等常用参数的作用,避免输出的JSON出现中文乱码、数字被转成字符串的问题
  • 了解json_decode()的用法,方便后续处理JSON格式的输入数据

3. 可选:MySQL JSON函数

如果不想在PHP层处理数据,也可以学习MySQL的JSON相关函数,直接在查询阶段拼装好需要的结构:

  • 掌握JSON_ARRAY()函数的用法,可直接在SQL中把fid、mid字段拼接为JSON数组,自定义别名为parents,省去PHP层处理的步骤
快速实现示例

PHP层处理方案

// $products 为从数据库查询得到的原始数据数组
foreach ($products as &$row) {
    $parents = [];
    if (!is_null($row['fid'])) {
        $parents[] = $row['fid'];
    }
    if (!is_null($row['mid'])) {
        $parents[] = $row['mid'];
    }
    $row['parents'] = $parents;
    // 删除不需要的原始字段
    unset($row['fid'], $row['mid']);
}
// 输出最终JSON
echo json_encode($products, JSON_UNESCAPED_UNICODE);

SQL层直接生成方案

SELECT 
    uid,
    id,
    sex,
    JSON_ARRAY(fid, mid) AS parents,
    firstname,
    lastname,
    description,
    image
FROM product_data;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:21:01