如何使用PHP将MySQL数据转换为指定结构的JSON动态对象

实现方法
你需要在PHP中构造关联数组,再通过json_encode输出即可,具体实现逻辑如下:
- 先查询获取数据表中的所有记录,包含ID、start_time、end_time三个字段
- 循环每条记录,以记录ID为数组键,对应时间字段为子数组的值进行赋值
- 输出JSON时按需添加格式化参数即可得到你需要的结构
示例代码
// 数据库查询部分按你现有逻辑调整即可,这里以PDO查询为例 $pdo = new PDO('mysql:host=127.0.0.1;dbname=你的数据库名;charset=utf8mb4', '数据库账号', '数据库密码'); $query = $pdo->query("SELECT id, start_time, end_time FROM 你的数据表名"); $list = $query->fetchAll(PDO::FETCH_ASSOC); // 构造目标数组 $result = []; foreach ($list as $item) { // 强制将ID转为字符串作为键,避免后续转JSON被识别为索引数组 $result[(string)$item['id']] = [ 'start_time' => $item['start_time'], 'end_time' => $item['end_time'] ]; } // 输出JSON,JSON_PRETTY_PRINT用于格式化输出,和你示例的排版一致 echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
注意事项
如果你的ID是连续的整数,不加处理的话json_encode可能会将数组识别为索引数组,输出[]包裹的JSON数组而非你需要的{}包裹的JSON对象,除了上面将ID转为字符串的方法外,也可以在json_encode时添加JSON_FORCE_OBJECT参数强制输出对象格式。
内容的提问来源于stack exchange,提问作者Ehsanul Karim
相关产品推荐
相关产品推荐

