[php]运用变量引用实现一维数组转多维树状数组-程序员宅基地

技术标签: php  


/**
 * 运用 变量引用 实现 一维数组 转 多维树状数组
 * @param $array
 * @param array $options = ['id'=>'id', 'pid'=>'pid', 'sub'=>'_sub', 'root'=>0]
 * @return array
 */
public static function array2Tree($array, $options = []) {

    /** merge Options */
    $opt = array_merge(['id'=>'id', 'pid'=>'pid', 'sub'=>'_sub', 'root'=>0], $options);

    $tree = [];

    if(is_array($array)){

        $refer = [];

        foreach ($array as $k => $v) {
            $refer[$v[$opt['id']]] =& $array[$k];
        }

        foreach ($array as $k => $v) {

            $parentId = $v[$opt['pid']];

            if ($opt['root'] == $parentId) {

                $tree[$v[$opt['id']]] =& $array[$k];

            }else{

                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$opt['sub']][$v[$opt['id']]] =& $array[$k];
                    unset($array[$k]);
                }
            }
        }
        unset($refer, $array);
    }
    return $tree;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33913377/article/details/90630291

智能推荐

pandas DataFrame Series数据操作总结_series加名字-程序员宅基地

文章浏览阅读1.7k次。pandas库是一个专门为数据分析创建的库函数,分为DataFrame和Series两类数据的操作。DataFrame可是视为二维矩阵+label;Series可以视为列+label因此,所有的函数都是围绕数据+label展开的。1、Series相关操作Series是什么?其实就是值+索引的形式,和字典很像。因此,所有操作其实都是对值和索引的引申。1.1、 Series创建..._series加名字

测试基于STM32的ADIS16405评估板,并在匿名四轴上实时显示3轴陀螺仪+3轴加速度计+3轴磁力计 波形。本文最后还公开一个基于C# 的串口波形显示客户端源码。_adis16460 陀螺仪 评估板-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏19次。标题:测试基于STM32的ADIS16405评估板,并在匿名四轴上实时显示3轴陀螺仪+3轴加速度计+3轴磁力计 波形。本文最好还公开一个基于C# 的串口波形显示客户端源码。 这里附上该评估板的原理图和PCB图。图片可以放大看,看不清不要紧我把PDF格式附上去的:该评估板内部已经刷了固件。这里也分享下HEX固件可以自己在STM32CubeProgrammer用 STLI..._adis16460 陀螺仪 评估板

开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?-程序员宅基地

文章浏览阅读99次。As long as you can still grab a breath, you fight.只要一息尚存,就不得不战。有那么一段时间,我特别迷恋金山词霸的每日一句分享海报。因为不仅海报上的图片美,文字也特别美,美得让我感觉生活都有了诗意。就像文章开头的那句中英文对照,中文和英文都妙极了。最近,又有很多人迷恋上了流利说的小程序分享海报(朋友圈比比皆是)。但不管是金山词..._开源 海报 java

Android应用之间的跳转以及参数的传递_android 接手第三方 跳转参数-程序员宅基地

文章浏览阅读2.6k次。/** * @param v 设置按钮点击事件 */ @Override public void onClick(View v) { super.onClick(v); switch (v.getId()) { case R.id.tv_content://跳转点击事件 //ComponentName 做..._android 接手第三方 跳转参数

c#面向对象与程序设计第三版第三章例题代码_实用C语言编程(第三版)高清PDF...-程序员宅基地

文章浏览阅读129次。编写C 程序不仅仅需要语法正确,最关键的是所编代码应该便于维护和修改。现在有很多介绍C 语言的著作,但是本书在这一方面的确与众不同,例如在讨论C中运算优先级时, 15种级别被归纳为下面两条原则:需要的朋友关注后私信我,大量优质电子资料分享!关注我,为你提供更多电子学习资料!如果感觉好记得点赞哦!- 先乘除,后加减;- 在所有该加括号的地方都加上括号第三版除介绍UNIX上的编程工具之外,还介绍了流行..._c#实用第三版

android edittext光标闪烁,关闭软键盘后,android – Edittext光标仍会闪烁-程序员宅基地

文章浏览阅读268次。首先创建自定义编辑文本.以下是按下键盘背面关闭键盘时回拨的示例public class EdittextListner extends EditText {private KeyImeChange keyImeChangeListener;public EdittextListner(Context context,AttributeSet attrs) {super(context,attrs)..._creator android editbox 光标闪烁

随便推点

AJax+XML+HTML+CSS+DIV+PHP+MYSQL创建网站--Java免费学习网-程序员宅基地

文章浏览阅读654次。AJaxAJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的

deepin使用crontab自动更换壁纸_deepin系统改变壁纸-程序员宅基地

文章浏览阅读1.2k次。文章目录起因解决方法python脚本crontab无效解决方法个人文件配置示例起因deepin下有自动更换壁纸功能,但是最多间隔1小时且最多自动更换范围为15张图片。解决方法用python脚本更换壁纸,再利用crontab定时执行python脚本完成自动更换壁纸功能。crontab也可定时执行其他sh脚本、python脚本。我也是第一次接触crontab,后将其用于github博客每天自动..._deepin系统改变壁纸

网络安全概论——防火墙原理与设计_描述状态检测防火墙的设计思想与方法-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏5次。防火墙是一种装置,它是由软件/硬件设备组合而成,通常处于企业的内部局域网与 Internet 之间,限制 Internet 用户对内部网络的访问以及管理内部用户访问 Internet 的权限。换言之,一个防火墙在一个被认为是安全和可信的内部网络和一个被认为是不那么安全和可信的外部网络(通常是 Internet)之间提供 一个封锁工具。如果没有防火墙,则整个内部网络的安全性完全依赖于每个主机, 因此,所有的主机都必须达到一致的高度安全水平, 这在实际操作时非常困难。_描述状态检测防火墙的设计思想与方法

feign设置header的正确方式_feign.headers-程序员宅基地

文章浏览阅读2k次。如何正确设置feign header@GetMapping("/xxx")@Headers( {"yyy: 1", "888-666: [email protected]"})DataResponse<zzz> queryxxx(@RequestParam String zz);正确设置:新增配置类import feign.RequestInterceptor;import feign.RequestTemplate;import org.apache.c_feign.headers

项目Bug集_npm -i yarn -g跟npm install生成的node_models一样吗-程序员宅基地

文章浏览阅读141次。一、Maven问题URI is not registedURI未注册问题:IDEA的xml文件中URI标红,提示URI is not registered解决方案:鼠标移到URI上,选择Fetch external resourceFailed to read artifact descriptor for xxx:jar读取依赖失败(Maven)解决方案:重新加载Maven或在settings.xml添加镜像Cannot reconnect无法重连(Maven).._npm -i yarn -g跟npm install生成的node_models一样吗

cpulimit的安装与使用-程序员宅基地

文章浏览阅读2k次。cpulimit 就是一款可以对 CPU 使用率进行控制的软件。So、、、需要下载压缩包进行安装;提供如下两种安装方法(倒不如说是提供两种下载路径):云主机版本:CentOS6.6一:cd /tmpwget 'http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz'tar cp..._cpulimit 编译安装

推荐文章

热门文章

相关标签