关于xuzuning版主发的非递归树形数组构造函数问题
之前自己使用过循环或者递归构建树型数组。今天搜索的时候看到之前xuzuning版主发的非递归树型数组构建函数。
- PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/** * 创建子节点树形数组 * 参数 * $ar 数组,邻接列表方式组织的数据 * $id 数组中作为主键的下标或关联键名 * $pid 数组中作为父键的下标或关联键名 * 返回 多维数组 **/function find_child($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] ) { $t[$item[$pid]]['child'][$item[$id]] =& $t[$k]; } } return $t;}
觉得写的非常巧妙,效率很高,也非常安全,受益匪浅。但是,在实际使用中,碰见了一点小问题。
因为本函数的中心思想是通过$tree[$pid]这样的结构来存放,也就是说,每条记录的key为其$pid。
这样就出现了一个问题,我在使用json_encode()的时候,会变成
{"pid1":{"id":"0001","pid":"0000","children":[{"pid2":{"id":"0002","pid":"0001"}},{"pid3":{"id":"0003","pid":"0001"}}]}}这样
可是我需要的结构是
{"id":"0001","pid":"0000","children":[{"id":"0002","pid":"0001"},{"id":"0002","pid":"0001"}]}
也就是说,存放记录的key为array默认的。
请问这个函数应该怎么修改呢?
------解决方案--------------------
不大可能,除非你寻找出新的算法
这个算法就是利用了 pid 和 id 的关系,通过构造关联数组才得以实现的
如果要使用这个函数,就要接受这个结果。除去 child 键倒是可以的
如果你遍历结果,将所有 child 下的关联数组用 array_values 化为下标数组,亦是一种方法

使用AppleID登录iTunesStore时,可能会在屏幕上抛出此错误提示“此AppleID尚未在iTunesStore中使用”。没有什么可担心的错误提示,您可以按照这些解决方案集进行修复。修复1–更改送货地址此提示出现在iTunesStore中的主要原因是您的AppleID个人资料中没有正确的地址。步骤1–首先,打开iPhone上的iPhone设置。步骤2–AppleID应位于所有其他设置的顶部。所以,打开它。步骤3–在那里,打开“付款和运输”选项。步骤4–使用面容ID验证您的访问权限。步骤

若您在Windows11/10的事件查看器中发现事件ID55、50、140或98,或遇到磁盘文件系统结构损坏且无法使用的错误,请按照以下指南解决此问题。什么是事件55,磁盘上的文件系统结构损坏和不可用的意思?第55届会议,Ntfs磁盘上的文件系统结构损坏且无法使用。请在卷上运行chkMSK实用程序当NTFS无法将数据写入事务日志时,会触发事件ID55的错误,这将导致NTFS无法完成无法写入事务数据的操作。这种错误通常发生在文件系统损坏的情况下,可能是由于磁盘上存在坏扇区或文件系统对磁盘子系统的不

在阿里巴巴软件中,一旦您成功注册一个账号,系统就会为您分配一个独特的ID,这个ID将作为您在平台上的身份标识。但是对于许多用户来说,他们会想要查询自己的ID,但是却不知道该如何操作。那么本站小编带来下文中,就将为大家带来详细的攻略步骤介绍,希望能帮助到大家!阿里巴巴id在哪里看答案:【阿里巴巴】-【我的】。1、首先打开阿里巴巴软件,进入到首页中后我们需要点击右下角的【我的】;2、然后来到我的页面中后我们在页面的上方就可以看到【id】了;阿里巴巴id和淘宝一样吗阿里巴巴id和淘宝id不一样,但是二
![事件 ID 4660:已删除对象 [修复]](https://img.php.cn/upload/article/000/887/227/168834320512143.png)
我们的一些读者遇到了事件ID4660。他们通常不确定该怎么做,所以我们在本指南中解释。删除对象时通常会记录事件ID4660,因此我们还将探索一些实用的方法在您的计算机上修复它。什么是事件ID4660?事件ID4660与活动目录中的对象相关,将由以下任一因素触发:对象删除–每当从ActiveDirectory中删除对象时,都会记录事件ID为4660的安全事件。手动更改–当用户或管理员手动更改对象的权限时,可能会生成事件ID4660。更改权限设置、修改访问级别或添加或删除人员或组时,可能会发生这种情

腾讯视频id在哪里查看?腾讯视频APP中是有专属的id,但是多数的用户不知道如何查看腾讯视频id,接下来就是小编为用户带来的腾讯视频id查看方法图文教程,感兴趣的用户快来一起看看吧!腾讯视频使用教程腾讯视频id在哪里查看1、首先打开腾讯视频APP,主页面右下角【个人中心】进入到专区;2、之后进入到个人中心页面,选择【设置】功能;3、然后在设置页面,点击最下方【退出账号】;4、最后在下图所示的页面即可查看到专属的id号。

常用的分布式ID解决方案在分布式系统中,生成全局唯一ID是非常重要的,因为在分布式系统中,多个节点同时生成ID可能会导致ID冲突。下面介绍几种常用的分布式ID解决方案。UUIDUUID(通用唯一标识符)是由128位数字组成的标识符,它可以保证在全球范围内的唯一性,因为其生成算法基于时间戳、节点ID等因素。UUID可以使用Java自带的UUID类来生成,如下所示:javaCopycodeimportjava.util.UUID;publicclassUuidGenerator{publicstat

很多朋友可能对于pid标识符还比较陌生,可以在任务管理器里进行查看。但是有些用户打开任务管理器时找不到PID标识符,其实如果用户想查看进程PID标识符的话,需通过对“任务管理器”相关设置就可以看到了,下面小编就以win7系统为例查看进程PID标识符的方法。PID标志符是windows操作系统对运行的程序的自动分配的一个独一无二的顺序编号,进程中止后PID被系统回收,可能会被继续分配给新运行的程序,当用户需要查看进程的时候都会通过任务管理器进行查看,那么要如何查看进程PID标识符呢?下面就跟大家分

在Linux操作系统中,每个运行的程序都是一个进程,每个进程都有一个唯一的进程标识符(PID)。同样的,每个进程都会有一个父进程,也就是创建它的进程,父进程的标识符被称为父进程ID(PPID)。在这篇文章中,我们将探讨如何在Linux系统中查找父进程的ID,并介绍一些有效的命令和工具,以帮助您获取有关进程之间关系的详细信息。查找父进程ID的基本命令首先,我将向大家简要介绍几个基本命令,这些命令可用于查看系统中运行的所有进程及其父进程ID。使用ps命令查看进程信息ps命令是一个强大的工具,它用于报


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
