如何将SQL查询的测试数据构造为层级数组或JSON结构
三级层级结构优雅实现方案
核心思路是利用关联数组键的唯一性天然保证testsuitecollectionId、testsuiteId的唯一,仅需单次遍历SQL结果集即可完成归集,时间复杂度为O(n)(n为SQL返回的行数),远优于多层嵌套循环的实现。
以下为PHP代码示例(适配你提到的$tsc数组场景):
// 1. 先基于已有$tsc数组预置顶层key,避免遗漏没有测试数据的testsuitecollectionId $hierarchy = array_fill_keys($tsc, []); // 2. 单次遍历SQL查询结果完成三级结构归集 foreach ($queryResult as $row) { $tscId = $row['testsuitecollectionId']; $tsId = $row['testsuiteId']; $tcId = $row['testcaseId']; // 对应testsuiteId不存在则初始化,键唯一性自动去重 if (!isset($hierarchy[$tscId][$tsId])) { $hierarchy[$tscId][$tsId] = []; } // 写入testcase与状态的映射 $hierarchy[$tscId][$tsId][$tcId] = $row['Status']; }
如果需要过滤不在$tsc数组里的testsuitecollectionId,可以在遍历里加一层isset($hierarchy[$tscId])的判断即可。
存储格式选择建议
- 优先选数组:如果你的后续操作是当前脚本直接导出Excel,数组不需要额外的编解码开销,访问、遍历、修改都更高效,也可以直接适配各类PHP导出Excel类库的入参要求。
- 仅需跨场景传输/持久化时选JSON:如果你需要把这个结构存入数据库、缓存,或者跨脚本、跨语言传递,再选择JSON格式,序列化后体积更小、兼容性更好。
内容的提问来源于stack exchange,提问作者Mads Sander Høgstrup
相关产品推荐
相关产品推荐

