关于xuzuning版主发的非递归树形数组构造函数有关问题
关于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 化为下标数组,亦是一种方法

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

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

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











AppleID를 사용하여 iTunesStore에 로그인하면 "이 AppleID는 iTunesStore에서 사용되지 않았습니다"라는 오류가 화면에 표시될 수 있습니다. 걱정할 오류 메시지는 없습니다. 다음 솔루션 세트에 따라 문제를 해결할 수 있습니다. 수정 1 – 배송 주소 변경 iTunes Store에 이 메시지가 나타나는 주된 이유는 AppleID 프로필에 올바른 주소가 없기 때문입니다. 1단계 – 먼저 iPhone에서 iPhone 설정을 엽니다. 2단계 – AppleID는 다른 모든 설정보다 우선해야 합니다. 그러니 열어보세요. 3단계 – 거기에서 “결제 및 배송” 옵션을 엽니다. 4단계 – Face ID를 사용하여 액세스 권한을 확인하세요. 단계

Windows 11/10의 이벤트 뷰어에서 이벤트 ID 55, 50, 140, 98이 발견되거나, 디스크 파일 시스템 구조가 손상되어 사용할 수 없다는 오류가 발생하는 경우, 아래 안내에 따라 문제를 해결하시기 바랍니다. 이벤트 55, 디스크의 파일 시스템 구조가 손상되어 사용할 수 없음은 무엇을 의미합니까? 세션 55에서 Ntfs 디스크의 파일 시스템 구조가 손상되어 사용할 수 없습니다. 볼륨에서 chkMSK 유틸리티를 실행하십시오. NTFS가 트랜잭션 로그에 데이터를 쓸 수 없으면 이벤트 ID 55의 오류가 트리거되어 NTFS가 트랜잭션 데이터를 쓸 수 없는 작업을 완료하지 못하게 됩니다. 이 오류는 일반적으로 디스크에 불량 섹터가 있거나 파일 시스템의 디스크 하위 시스템이 부적절하여 파일 시스템이 손상된 경우에 발생합니다.

Alibaba 소프트웨어에서는 계정 등록이 완료되면 시스템에서 플랫폼에서 귀하의 신원 역할을 하는 고유 ID를 할당합니다. 하지만 많은 사용자들은 자신의 ID를 조회하고 싶지만 어떻게 해야 할지 모릅니다. 그러면 이 웹사이트의 편집자가 아래 전략 단계에 대한 자세한 소개를 제공할 것입니다. 도움이 되기를 바랍니다! 알리바바 ID에 대한 답변을 찾을 수 있는 곳: [Alibaba]-[My]. 1. 먼저 홈페이지에 들어간 후 오른쪽 하단에 있는 [내]를 클릭해야 합니다. 2. 그런 다음 내 페이지로 이동하면 페이지 상단에 [id]가 표시됩니다. 아이디는 타오바오와 동일한가요? 알리바바 아이디와 타오바오 아이디는 다른데 둘이 맞나요?
![이벤트 ID 4660: 개체가 삭제되었습니다. [수정]](https://img.php.cn/upload/article/000/887/227/168834320512143.png?x-oss-process=image/resize,m_fill,h_207,w_330)
독자 중 일부는 이벤트 ID4660을 경험했습니다. 그들은 무엇을 해야 할지 확신하지 못하는 경우가 많으므로 이 가이드에서 이에 대해 설명합니다. 이벤트 ID 4660은 일반적으로 개체가 삭제될 때 기록되므로 컴퓨터에서 이 문제를 해결할 수 있는 몇 가지 실용적인 방법도 살펴보겠습니다. 이벤트 ID4660이란 무엇입니까? 이벤트 ID 4660은 Active Directory의 개체와 관련되어 있으며 다음 요소에 의해 트리거됩니다. 개체 삭제 – Active Directory에서 개체가 삭제될 때마다 이벤트 ID 4660이 포함된 보안 이벤트가 기록됩니다. 수동 변경 - 사용자 또는 관리자가 개체의 사용 권한을 수동으로 변경할 때 이벤트 ID 4660이 생성될 수 있습니다. 이는 권한 설정을 변경하거나, 액세스 수준을 수정하거나, 사람이나 그룹을 추가 또는 제거할 때 발생할 수 있습니다.

Tencent Video ID는 어디서 확인할 수 있나요? Tencent Video 앱에는 전용 ID가 있지만 대부분의 사용자는 Tencent Video ID를 확인하는 방법을 모릅니다. 다음은 Tencent Video ID를 확인하는 방법에 대한 그래픽 튜토리얼입니다. 관심 있는 사용자를 위한 편집자입니다. Tencent Video 사용 튜토리얼 Tencent Video ID 확인 방법 1. 먼저 Tencent Video 앱을 열고 메인 페이지 오른쪽 하단의 [개인 센터]를 통해 특별 영역에 들어갑니다. 2. 그런 다음 개인 센터 페이지에 들어가서 [ 3. 설정 페이지로 이동하여 하단의 [계정 탈퇴]를 클릭하세요. 4. 마지막으로 아래와 같은 페이지에서 전용 ID 번호를 확인할 수 있습니다.

많은 친구들이 pid 식별자에 익숙하지 않을 수 있으며, 작업 관리자에서 확인할 수 있습니다. 그러나 일부 사용자는 작업 관리자를 열 때 PID 식별자를 찾을 수 없습니다. 실제로 사용자가 프로세스 PID 식별자를 보려면 이를 보려면 "작업 관리자"를 설정해야 합니다. win7 시스템을 예로 들어 프로세스 PID 식별자를 보는 방법. PID 식별자는 Windows 운영 체제가 실행 중인 프로그램에 자동으로 할당한 고유한 일련 번호입니다. PID는 프로세스가 종료된 후 시스템에 의해 재활용되며 사용자가 프로세스를 확인해야 할 때 계속해서 할당될 수 있습니다. , 그들은 작업 관리자를 사용하여 확인합니다. 프로세스 PID 식별자를 확인하는 방법은 무엇입니까? 아래에서 공유해드리겠습니다

일반적으로 사용되는 분산 ID 솔루션 분산 시스템에서는 전역적으로 고유한 ID를 생성하는 것이 매우 중요합니다. 분산 시스템에서는 동시에 ID를 생성하는 여러 노드가 ID 충돌을 일으킬 수 있기 때문입니다. 다음은 일반적으로 사용되는 몇 가지 분산 ID 솔루션을 소개합니다. UUIDUUID(Universally Unique Identifier)는 128자리로 구성된 식별자로, 생성 알고리즘이 타임스탬프, 노드 ID 등의 요소를 기반으로 하기 때문에 전역적 고유성을 보장할 수 있습니다. UUID는 아래와 같이 Java 자체 UUID 클래스를 사용하여 생성할 수 있습니다. javaCopycodeimportjava.util.UUID;

Linux 운영 체제에서 실행 중인 각 프로그램은 프로세스이며 각 프로세스에는 고유한 프로세스 식별자(PID)가 있습니다. 마찬가지로 각 프로세스에는 해당 프로세스를 생성한 부모 프로세스가 있습니다. 부모 프로세스의 식별자를 PPID(부모 프로세스 ID)라고 합니다. 이 기사에서는 Linux 시스템에서 상위 프로세스의 ID를 찾는 방법을 살펴보고 프로세스 간의 관계에 대한 자세한 정보를 얻는 데 도움이 되는 몇 가지 효과적인 명령과 도구를 소개합니다. 상위 프로세스 ID를 찾는 기본 명령 먼저 시스템에서 실행 중인 모든 프로세스와 해당 상위 프로세스 ID를 확인하는 데 사용할 수 있는 몇 가지 기본 명령을 간략하게 소개하겠습니다. ps 명령을 사용하여 프로세스 정보를 봅니다. ps 명령은 보고하는 데 사용되는 강력한 도구입니다.
