一、问题
在实际项目中,经常遇到一对多数据表连表【left join】查询的情况,从数据表查出来的数据集会默认填充主表的记录,如下图:
其中分类UI下面有两个小类别动画、场景,分类CG下面有两个小类别动作、UI,这样的结果集往往不是我们需要的,我们需要的更过时以下形式的结果集:
二、参考方法
function fun_data_format($data = []){ $ret = []; foreach ($data as $k => $v) { if (!isset($data[$k][‘mark‘])) { // 提取公共参数【字段】 $ret[$k] = [ ‘catg_id‘ => $v[‘catg_id‘], ‘catg_name‘ => $v[‘catg_name‘], ]; foreach ($data as $kk => $vv) { if ($v[‘catg_id‘] == $vv[‘catg_id‘]) { $ret[$k][‘nodes‘][] = $vv[‘name‘]; // 标记已处理 $data[$kk][‘mark‘] = true; } } } } $ret = array_values($ret); return $ret; }
原文:https://www.cnblogs.com/whx-blogs/p/12382034.html