1.应用场景

主要用于重复操作, 而且具有层级关系/ 典型的就是数级[无限级]分类.

2.方式

方式一:

TBD

方式二:

TBD

方式三:

TBD

总结三者之间的联系和区别:

TBD

Code:

/**
* [CAN_POST] just to test //即查询等级,如果自身有,则取自身等级,否则取第一个父类的等级参数
* 获取等级level
*/

public function test(){ 
    $json = json_decode($this->data, 1)['data'];
    $profile = [];

foreach($json as $key => $value){ 
        $profile['level'] = $this->getLevelField($value, $json);
    }

return $profile;
}

/**
 * [CAN_POST]
 * 获取等级level
 */
public function getLevelField($value, &$json){
    $level = null;
    if(isset($value['+CVars'])){
        foreach($value['+CVars'] as $v){
            if(!is_array($v)) continue;
            foreach($v as $kk => $vv){
                if($kk == 'r.TCQualityGrade'){
                    return $vv;
                }
            }
        }
        $level = $this->getParentLevel($value, $json);
    }else{
        $level = $this->getParentLevel($value, $json);
    }
    return $level;
}

/**
 * 获取父类level
 */
public function getParentLevel($value, &$json){
    $level = null;
    $baseProfileName = isset($value['BaseProfileName']) ? $value['BaseProfileName'] : '';
    if($baseProfileName){
        $baseProfile = isset($json["{$baseProfileName} DeviceProfile"]) ? $json["{$baseProfileName} DeviceProfile"] : null;
        if($baseProfile){
            $level = $this->getLevelField($baseProfile, $json);
        }
    }
    return $level;
}

后续补充

...

3.问题

TBD

4.参考

https://blog.csdn.net/wocaa2046/article/details/81115744

https://www.cnblogs.com/DeanChopper/p/4706071.html

后补补充

...

PHP 递归函数的三种实现方式相关推荐

  1. Hive metastore三种配置方式

    Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适合生产环境.Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore. 一.本地d ...

  2. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  3. FPGA之道(41)HDL的三种描述方式

    文章目录 前言 三种描述方式 结构化描述方式 数据流描述方式 行为级描述方式 前言 常编写Verilog代码的就会知道,我们对于某一功能的描述,可以通过门电路来描述,也可以直接描述其功能等,这就牵扯到 ...

  4. 【 Verilog HDL 】HDL的三种描述方式

    当我们使用HDL代码描述硬件功能的时候,主要有三种基本描述方式,即结构化描述方式.数据流描述方式和行为级描述方式.通过本次总结,我们将明白到底我们描述的电路是什么方式描述的. 结构化描述方式 结构化描 ...

  5. oracle if=,oracle中if/else的三种实现方式详解

    1.标准sql规范 1.单个IF IF v=... THEN END IF; 2.IF ... ELSE IF v=... THEN ELSE t....; END IF; 3.多个IF IF v=. ...

  6. oracle Hash Join及三种连接方式

    在Oracle中,确定连接操作类型是执行计划生成的重要方面.各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况. 无论是Nest Loop Join(嵌套循 ...

  7. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  8. 1.5 使用new创建动态结构和自动, 静态, 动态三种存储方式

    1. 有些时候在运行时创建数组由于在编译时创建数组(有些时候不是这样, 比如使用OpenGL绘图和GPU并行计算结合的时候, 需要将大量的数据传送到显存, 每次计算完又要传送回宿主机渲染, 但并不是要 ...

  9. 三种去重方式——HashSet、Redis去重、布隆过滤器(BloomFilter)

    三种去重方式 去重就有三种实现方式,那有什么不同呢? HashSet 使用java中的HashSet不能重复的特点去重.优点是容易理解.使用方便. 缺点:占用内存大,性能较低. Redis去重 使用R ...

最新文章

  1. solaris上的pkg管理
  2. cocos2d-x 自己写的一个scrollview 有待完善
  3. 帮腾讯云拿下行业第一的程序员们,不穿格子衫和人字拖
  4. java web插件_javaweb项目插件实现机制
  5. SEO:影响网站排名的一些问题
  6. sm总线控制器找不到驱动程序_技术 | 基于CAN总线的伺服电机通信控制
  7. 10.python网络编程(socket server 实现并发 part 2)
  8. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
  9. IDLDrawWidaget Activex
  10. 熊猫直播宣布正式关站 至今已运行1286天
  11. HTML5之语义化标签
  12. python模拟点击屏幕ios_python模拟点击可以在ios中实现吗?
  13. 一起自学SLAM算法:写在前面
  14. 嗨!亲爱的朋友们,欢迎您光临我的…
  15. HTML+CSS实现导航条及下拉菜单
  16. python12岁该学吗_本人12岁,对编程感兴趣,之前也学过python,被爸妈打消积极性,面对爸妈的反对,我该顺从还是继续?...
  17. 面向对象基础9(继承与继承语法)
  18. Detecting Deep-Fake Videos from Appearance and Behavior
  19. 【虾神白话空间统计】笔记:置信度、零假设、PZ值、随机分布
  20. 笔记本win10宽带共享wifi热点教程

热门文章

  1. Annex-B和AVCC
  2. Unity3DCPU优化方法相关理论知识
  3. C语言getchar()和putchar()函数
  4. 实时操作系统和分时操作系统的区别
  5. 华为南研所校招软件技术岗几点建议
  6. 华南师范大学校园网自动登录教程
  7. JAVA编写单例(Singleton)模式
  8. 【Matlab】如何自定义无输入和无输出的函数?
  9. HTML实现简单的注册页面
  10. 2018清华计算机考研总结