登录
首页 >  文章 >  php教程

PHP生成嵌套JSON数组详细教程

时间:2026-05-30 16:42:56 256浏览 收藏

本文深入讲解了如何在PHP中将扁平化的数据库查询结果智能重构为具有嵌套结构(如统一的`attribut`子数组)的标准化JSON数据,通过手动构建关联数组而非直接输出原始结果,精准实现层级化数据组织;方案兼顾可读性、健壮性与扩展性——支持中文不乱码、空结果安全处理、字段精简无冗余,并为未来多属性场景预留升级路径,让前后端协作更高效、接口契约更清晰。

如何在 PHP 中构建嵌套 JSON 数组结构

本文详解如何将数据库查询结果动态重构为含嵌套数组(如 attribut 子数组)的 JSON 格式,避免扁平化数据,满足前端或 API 的层级化数据需求。

本文详解如何将数据库查询结果动态重构为含嵌套数组(如 `attribut` 子数组)的 JSON 格式,避免扁平化数据,满足前端或 API 的层级化数据需求。

在 PHP 中生成符合特定结构的 JSON 数据,关键在于在 json_encode() 之前,对原始关联数组进行结构化重组,而非直接输出查询结果。你当前的代码将每行记录原样推入 $output,导致 ID2 与 ID、NAME 处于同一层级;而目标结构要求 ID2 必须被包裹进名为 attribut 的嵌套数组中(即使每个客户仅有一个属性,也需保持数组形式以支持未来扩展)。

以下是推荐的重构方案:

// 执行查询
$sql = 'SELECT ID, NAME, ID2 FROM mytable'; // 显式指定字段,提升可读性与安全性
$query = mysqli_query($con, $sql);

$output = [];

if ($query && mysqli_num_rows($query) > 0) {
    while ($data = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
        // 提取并封装 attribut 子数组
        $attribut = [
            ['ID2' => $data['ID2']]
        ];

        // 构建主对象:保留 ID、NAME,并注入 attribut 键
        $output[] = [
            'ID'     => $data['ID'],
            'NAME'   => $data['NAME'],
            'attribut' => $attribut
        ];
    }
}

// 输出标准化 JSON(建议添加 header)
header('Content-Type: application/json; charset=utf-8');
echo json_encode($output, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

关键要点说明:

  • 结构先行:不再复用原始 $data 数组,而是显式构造新数组,确保键名(attribut)和嵌套层级([ [...] ])完全匹配目标 JSON;
  • 字段清理:无需 unset(),通过重新组合字段天然规避冗余键,更安全、更易维护;
  • 健壮性增强:增加 mysqli_num_rows() 判断,避免空结果集导致 $output 为 null;
  • JSON 优化:使用 JSON_UNESCAPED_UNICODE 防止中文乱码,JSON_PRETTY_PRINT 便于调试(生产环境可移除);
  • 安全提示:若 ID2 可能为空或需多值扩展,后续可升级为动态构建 attribut 数组(例如从关联子表查询)。

最终输出将严格符合你的预期结构——每个客户对象均包含顶层字段与统一格式的 attribut 嵌套数组,为前后端协作提供清晰、可扩展的数据契约。

以上就是《PHP生成嵌套JSON数组详细教程》的详细内容,更多关于的资料请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>