PHP把列表数据的子级内容合并到父级
1、父级count总和 = 父级count + 该父级下所有子级count
2、代码:
public function list(){$assoc = [ //定义父级ID对应的子级ID1 => [1, 3],2 => [2, 4, 5],6 => [6, 7, 8],9 => [9, 10]];$list = [['id'=>'1', 'name'=>'父级1', 'count'=>1],['id'=>'2', 'name'=>'父级2', 'count'=>1],['id'=>'3', 'name'=>'子级3', 'count'=>1],['id'=>'4', 'name'=>'子级4', 'count'=>1],['id'=>'5', 'name'=>'子级5', 'count'=>1],['id'=>'6', 'name'=>'父级6', 'count'=>1],['id'=>'7', 'name'=>'子级7', 'count'=>1],['id'=>'8', 'name'=>'子级8', 'count'=>1],];$ids = array_column($list, 'id');$listCombine = array_combine($ids, $list);$result = [];$pids = array_keys($assoc);foreach ($pids as $pid){$ids = isset($assoc[$pid]) ? $assoc[$pid] : []; //获取父级下的子级foreach ($ids as $id){if (!isset($listCombine[$id])){continue;}if(isset($result[$pid])){$result[$pid]['count'] += $listCombine[$id]['count'];}else{$result[$pid] = $listCombine[$id];}}}return $result;
}
3、打印结果为
array (1 =>array ('id' => '1','name' => '父级1','count' => 2,),2 =>array ('id' => '2','name' => '父级2','count' => 3,),6 =>array ('id' => '6','name' => '父级6','count' => 3,),
)