热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

php分支树排除某个分支该如何处理?

大家好,本人新手。咨询大家一个问题。A为金字塔的顶点,下面有初级会员ABCDEF等若干,每个初级会员下面又有初级会员若干,这样一直排列下去。如图如果E1会员身份升级为一级会员,则A可以获取提成10块钱。但...

大家好,本人新手。咨询大家一个问题。

A为金字塔的顶点,下面有初级会员ABCDEF等若干,每个初级会员下面又有初级会员若干,这样一直排列下去。

如图

如果E1会员身份升级为一级会员,则A可以获取提成10块钱。

但如果他的上线也就是B1身份为一级会员,则10块钱就归B1.

请问该用何种思路去统计某个时间段内A的提成呢,也就是A的所有分支的提成必须排除掉B1分支里的会员数据。

回复内容:

大家好,本人新手。咨询大家一个问题。

A为金字塔的顶点,下面有初级会员ABCDEF等若干,每个初级会员下面又有初级会员若干,这样一直排列下去。

如图

如果E1会员身份升级为一级会员,则A可以获取提成10块钱。

但如果他的上线也就是B1身份为一级会员,则10块钱就归B1.

请问该用何种思路去统计某个时间段内A的提成呢,也就是A的所有分支的提成必须排除掉B1分支里的会员数据。

遍历A的子节点,如果不是一级会员,就加入一个线性表里(表示此节点升格,A可以获得收益),然后继续遍历这个节点

//伪代码 获取到A节点可以获得收益的后辈节点
//topNode为节点对象
function getAllChilds(object topNode){
    static childArr=[];
    foreach(topNode->getAllChilds as index=>tempChildNode){
        //如果当前节点不为一级节点
        if(!tempChildNode->rankIsOne){
            array_push(childArr,tempChildNode);
            getAllChilds(tempChildNode);
        }
    }
    return childArr;
}

不过看题目是某个时间段A的提成,意思好像是节点树各个节点的rank是会变动的,这个就有点难了
或者在每次节点升格的时候,都算一次收益,以及收益节点,以及时间,写入数据库。这样查询就只需要一条SQL语句了

遍历所有节点,把父节点为你要求的一级会员的分支从树中去掉不就行了么。……

推荐阅读
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • 解决PHP与MySQL之间的编码不匹配问题
    探讨如何有效解决PHP与MySQL之间常见的编码问题,确保数据的正确传输与显示。 ... [详细]
  • MySQL 5.7 绿色版安装及 my.ini 配置详解
    本文主要针对最近因系统重装导致的MySQL配置问题,详细介绍了MySQL 5.7.24绿色解压版的安装步骤及my.ini配置文件的关键设置,帮助用户顺利完成数据库的安装与配置。 ... [详细]
  • 本文介绍如何利用JavaScript在页面加载时为ASP.NET的DropDownList控件设置特定的选项值。 ... [详细]
  • MyBatis入门指南
    本文详细介绍了MyBatis的基础知识,包括如何整合日志框架(如log4j和logback),使用外部JDBC文件,getMapper()方法的应用,以及别名设置等技巧。 ... [详细]
  • 在使用 SQL 语句从数据库中提取数据并尝试将其转换为其他数据类型时,可能会遇到 'java.math.BigDecimal cannot be cast to java.lang.Integer' 错误。本文将详细解释这一错误的原因,并提供有效的解决方案。 ... [详细]
  • 本文探讨了如何利用脚本文件高效管理Oracle数据库,包括脚本文件的创建、编辑及运行方法,旨在为数据库管理人员提供实用指导。 ... [详细]
  • 使用H5在前端生成Excel文件的方法
    本文介绍了一种利用HTML5和JavaScript库在浏览器端直接生成并下载Excel文件的技术方案。通过引入alasql.js和xlsx.core.min.js两个库,可以轻松实现数据导出功能。 ... [详细]
  • 本文介绍了一种方法,用于创建一个包含中文数据的 Employees 表,并确保在 SQL Server 中能够正确显示和处理中文字符。 ... [详细]
  • CentOS 7.6环境下Oracle 11g的数据泵操作与nmon性能监控
    本文详细介绍在CentOS 7.6操作系统中使用Oracle 11g的数据泵(Data Pump)进行数据的导入导出操作,并介绍如何通过nmon工具进行系统性能的监控与分析。 ... [详细]
  • 本文档详细介绍了如何在MongoDB命令行中执行基本操作,包括数据库的选择与创建、文档的插入与查询、文档的更新与删除等。同时,还涵盖了条件查询、统计、模糊查询等高级功能。 ... [详细]
  • 本文探讨了SQL查询执行缓慢的多种可能因素,并提供了详细的解释和解决方案。 ... [详细]
  • 本文档详细规划了从基础到高级的软件测试学习路径,包括但不限于测试基础、Linux和数据库、功能测试、Python编程、接口测试、性能测试、金融项目实战、UI自动化测试等内容,旨在为初学者和进阶者提供全面的学习指导。 ... [详细]
  • 本文探讨了一起由物化视图统计信息不当引起的查询性能下降问题,并详细介绍了问题的诊断与解决方法。通过调整统计信息收集策略,最终显著提升了查询效率。 ... [详细]
  • 本文详细介绍了Oracle数据库的基本架构,包括数据文件和内存结构的概念。文章重点解释了Oracle实例的组成部分,如系统全局内存区域(SGA)和后台进程,以及客户端进程与服务器进程的交互方式。此外,还探讨了SGA中的共享池、库高速缓存、锁存器及SGA缓冲区缓存等关键组件的功能和运作机制。 ... [详细]
author-avatar
kkq--_771
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有